EA
10 Mar 2021
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();
}
}
}
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();
}
}
}