- Home /
How to make two colors lerp independently in this code?
I'm trying to animate the appearance of a text block. I want the block color alpha to stop at 86% full alpha, and text color to stop at full alpha.
private IEnumerator Appear(GameObject go, float appearTime)
{
animating = true;
float colorAlpha = go.GetComponent<Image>().color.a;
float textAlpha = go.GetComponentInChildren<Text>().color.a;
float interpolator = 0;
while (animating)
{
interpolator += Time.deltaTime / appearTime;
colorAlpha = Mathf.Lerp(colorAlpha, 0.86f, interpolator);
textAlpha = Mathf.Lerp(textAlpha, 1, interpolator);
Color newBlockColor = go.GetComponent<Image>().color;
newBlockColor.a = colorAlpha;
Color newTextColor = go.GetComponentInChildren<Text>().color;
newTextColor.a = colorAlpha;
go.GetComponent<Image>().color = newBlockColor;
go.GetComponentInChildren<Text>().color = newTextColor;
if (interpolator >= 1)
{
animating = false;
break;
}
}
yield return null;
}
Maybe im making it more complicated? Compiler didn't allow me to change color directly, cause its a struct. I also know there's Color.Lerp() method. Is it better in any way?
Answer by fafase · Jun 08, 2019 at 03:41 PM
You are using Lerp wrong.
Mathf.Lerp(start, end, ratio);
so it should be like this:
private IEnumerator Appear(GameObject go, float appearTime)
{
Image image = go.GetComponent<Image>();
Text text = go.GetComponentInChildren<Text>();
float interpolator = 0;
while (interpolator < 1)f
{
interpolator += Time.deltaTime / appearTime;
Color iCol = image.color;
iCol .a = Mathf.Lerp(image.color.a, 0.86f, interpolator);
image.color = iCol ;
Color tCol= text.color;
tCol.a = Mathf.Lerp(text.color.a, 1f, interpolator);
text.color = tCol;
yield return null;
}
}
For struct, you need to first store the value, modify it and pass it back. I guess this should work. I also remove some of animating variable and check as you can make it happen in the while check.
Your answer
Follow this Question
Related Questions
changes to colour alpha affect RGB values, but not in the same way 1 Answer
Lerp color of verts with position bigger than 1 1 Answer
lerp transparency back and forth, while cycling through rainbow? 0 Answers
How to make OnTriggerStay ColorLerp start all over again OnTrigger? 2 Answers
Trouble with OnGUI and Update 3 Answers