Y a quelque chose que j'ai du mal a comprendre au niveau du Color.Lerp....
Dans la documentation " https://docs.unity3d.com/ScriptReferenc ... Color.html "
Ils utilisent un Mathf.PingPong mais pourquoi ?
J'ai fait plusieurs tests (je les ai peut-être mal fait mais je ne crois pas...)
-Avec :
Code : Tout sélectionner
if(Input.GetKey(KeyCode.G))
{
t = Mathf.Lerp(Time.time, duration, 0) / duration;
cam.backgroundColor = Color.Lerp(color1, color2, t);
}
- Avec des conditions non plus
Code : Tout sélectionner
if (test == true)
{
float t = Mathf.PingPong(Time.time, duration) / duration;
cam.backgroundColor = Color.Lerp(color1, color2, t);
test = false;
}
if(Input.GetKey(KeyCode.G))
{
test = true;
}
Ces codes peuvent paraître bizarre je pense lol ^^
Je viens de réaliser un dernier test avec une coroutine, cela a fonctionné mais cependant je ne vois pas l'utilité de Mathf.PingPong pour changer la couleur seulement une fois et non un "aller-retour"
Je devrai remplacer Mathf.PingPong par quoi ?
Code : Tout sélectionner
private void OnTriggerEnter2D(Collider2D coll)
{
if(coll.gameObject.tag == "Zone2")
{
StartCoroutine(ColourChange());
ZoneChange = true;
}
}
IEnumerator ColourChange()
{
while (ZoneChange == true)
{
float t = Mathf.PingPong(Time.time, duration) / duration;
cam.backgroundColor = Color.Lerp(color1, color2, t);
yield return null;
}
}
.