- Home /
4.6 UI Image Color.Lerp
Hello, below is some code where I am trying to get a smooth transition from green to yellow. The colours do change upon pressing the required keys but there is no transition from colour to colour.
The image is part of the canvas in the 4.6 version of Unity.
regionsColourChange[0] is an array where the image is stored and green and yellow are colour variables.
Any help would be appreciated, thanks.
if(Input.GetKeyDown(KeyCode.A))
{
regionsColourChange[0].GetComponent<Image>().color = Color.Lerp(green,yellow, Time.deltaTime * smooth);
}
if(Input.GetKeyDown(KeyCode.B))
{
regionsColourChange[0].GetComponent<Image>().color = Color.Lerp(yellow, green, Time.deltaTime * smooth);
}
Your Lerp is being used incorrectly.
It is an Attended Function, not an Instantaneous one.
I say this to mean that you must repeat-call the function whilst changing the value of t (0->1). You then receive a scaled value between From and To.
$$anonymous$$ost Lerps are placed in something like Update.
Imagine you have a Crossfader slider switch. Left is 'From', right is 'To'. You slowly move the slider from left to right and the output is somewhere between the two. But you need to keep moving it or it will stop.
Can you confirm that your "smooth" variable's value is "small". Once Time.deltaTime * smooth == 1.0f
, the transition will be complete. So smooth value of ONE should make the transition take 1 second. A smooth value of 0.5 should make it take 1/0.5 =2 seconds.
Also note that based on your code, the color change will only occur while the key is held down (or is it only once when the key is hit, I forget exactly how GetDown$$anonymous$$ey
operates).