- Home /
single color lerp
i have made a scrtipt witch lerps between a bunch of colors but i only want to change it when one of the colors hat reached its mark.
the problem is that it does not stop lerping.
this is the code without the color switching. i just need to return false to a bool to change the colors.
void Update () {
if (LerpColorBool == true)
{
LerpColor();
}
}
void LerpColor()
{
float t = Mathf.PingPong (Time.time, duration) / duration;
RenderSettings.fogColor = Color.Lerp (fogColor1, fogColor2, t);
RenderSettings.ambientLight = Color.Lerp (ambColor1, ambColor2, t);
DirectionalLight.light.color = Color.Lerp (ambColor1, ambColor2, t);
if (RenderSettings.fogColor == fogColor2 || RenderSettings.fogColor == fogColor1)
{
LerpColorBool = false;
}
}
if ( $$anonymous$$athf.Abs( RenderSettings.fogColor.r) == fogColor2.r && $$anonymous$$athf.Abs( RenderSettings.fogColor.g) == fogColor2.g && $$anonymous$$athf.Abs( RenderSettings.fogColor.b) == fogColor2.b ) {
LerpColorBool = false;
}
does not work :(
Answer by zalan · Aug 18, 2014 at 08:12 AM
If I were you, I would save the time when the lerp starts:
LerpColorBool = true;
Float time = Time.time;
Then I would replace this float t =... to:
float t = (Time.time-time)/durstion;
if (t > 1) t = 1;
Also you shoudn't check the colors at the end, rather the time:
if (t>=1) LerpColorBool = false;
i also need it to lerp back to color one so i can change the colors when they reach the other color;
this is what i use for the color changing. its quite long :P il turn it in to a list when im done. the thing is it is quite a hard change at the moment and i dont want to see the color switch. **Link**
i also tryed this. void Update () { if (LerpColorBool == true) { //LerpColor(); ColorLerper(); } } void ColorLerper () { switch (map) { case 1: float timeA = $$anonymous$$athf.PingPong (Time.time, duration) / duration; RenderSettings.fogColor = Color.Lerp (fogColor1, fogColor2, timeA); RenderSettings.ambientLight = Color.Lerp (ambColor1, ambColor2, timeA); DirectionalLight.light.color = Color.Lerp (ambColor1, ambColor2, timeA); if (timeA>=1f) {map =2;} break; case 2: float timeB = $$anonymous$$athf.PingPong (Time.time, duration) / duration; RenderSettings.fogColor = Color.Lerp (fogColor2, fogColor3, timeB); RenderSettings.ambientLight = Color.Lerp (ambColor2, ambColor3, timeB); DirectionalLight.light.color = Color.Lerp (ambColor2, ambColor3, timeB); break; if (timeB>=1f) {map =3;} case 3: float timeC = $$anonymous$$athf.PingPong (Time.time, duration) / duration; RenderSettings.fogColor = Color.Lerp (fogColor3, fogColor4, timeC); RenderSettings.ambientLight = Color.Lerp (ambColor3, ambColor4, timeC); DirectionalLight.light.color = Color.Lerp (ambColor3, ambColor4, timeC); if (timeC>=1f) {map =100;} break; } }
but this time it wont change colors :(
Your answer
Follow this Question
Related Questions
Distribute terrain in zones 3 Answers
How can I change the color of a light over time? 3 Answers
Time.deltaTime making color lerp appear fast, but won't reach 1 1 Answer
Lerping 10 collors not that smooth 1 Answer
Multiple Cars not working 1 Answer