Unity Play Logo
Showcases
How to
Notifications
EA
arruda_work
WebGL Builds
71 views0 plays0 likes0 comments
Runner Random Winner - Coroutine Unity
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class RunnerBe : MonoBehaviour { public Text winText; public Transform endLine; private float durationMin = 2; private float durationMax = 7; // Start is called before the first frame update void Start() { //On calcule une durée random entre une valeur min et max float runDuration = Random.Range(durationMin, durationMax); Vector3 targetPosition = new Vector3(endLine.position.x, transform.position.y, transform.position.z); //OU BIEN : Vector3 targetPosition = transform.position + new Vector3(endLine.position.x - transform.position.x, 0, 0); StartCoroutine(RunCoroutineVector(transform.position, targetPosition, runDuration)); //StartCoroutine(RunCoroutineVector(transform.position.x, endLine.position.x, runDuration)); } IEnumerator RunCoroutineVector(Vector3 start, Vector3 target, float duration) { float elapsedTime = 0; while (elapsedTime < duration) { float completionPercent = elapsedTime / duration; Vector3 newPosition = Vector3.Lerp(start, target, completionPercent); transform.position = newPosition; //Mise à jour du counteur de temps écoulé elapsedTime += Time.deltaTime; yield return null; } //Ces lignes sont exécutées à la fin de l'interpolation winText.text = gameObject.name + " Won"; winText.gameObject.SetActive(true); // active StopAllOtherCoroutine(); } //IEnumerator RunCoroutine (float startX, float targetX, float duration) //{ // float elapsedTime = 0; // while (elapsedTime < duration) // { // float completionPercent = elapsedTime / duration; // float newX = Mathf.Lerp(startX, targetX, completionPercent); // //Application du nouveau X // transform.position = new Vector3(newX, transform.position.y, transform.position.z); // //Mise à jour du counteur de temps écoulé // elapsedTime += Time.deltaTime; // yield return null; // } // //Ces lignes sont exécutées à la fin de l'interpolation // winText.text = gameObject.name + " Won"; // winText.gameObject.SetActive(true); // StopAllOtherCoroutine(); //} void StopAllOtherCoroutine() { RunnerBe[] allRunners = FindObjectsOfType<RunnerBe>(); for (int i = 0; i < allRunners.Length; i++) { RunnerBe runner = allRunners[i]; runner.StopAllCoroutines(); } } }
133 views7 plays0 likes0 comments
Exercise 5 - ISART 2021
112 views9 plays0 likes0 comments
Exercise 5 - ISART 2021
113 views7 plays0 likes0 comments
Labyrinthe 5.0
176 views15 plays1 likes1 comments
GD1 - Sphere & Cubes - Eduardo de Arruda 2020
256 views12 plays0 likes2 comments
Eduardo de Arruda
157 views5 plays0 likes0 comments