I am looking for a method to move a variable’s value to 0, in 1.5 seconds.
I have a variable, which holds 250 at the start.
I have tried it this way, but it doesn’t work.
function Fade (target : SpriteText)
{
var startingFade : int = 250;
var targetFade : int = 0;
var fadeTime : float = 1.5;
var rate = 1.0/fadeTime;
var t : float = 0.0;
while (t < 1.0)
{
t += Time.deltaTime * rate;
target.SetColor(Color(255, 177, 0, t));
yield;
}
}
Looking at your code, it seems that you want to go from one color to another (maybe the colors just differ by alpha value) over a period of time. There is exactly a function for that. It is called:
Color.Lerp
I’m going to ask you to study that in the Unity Scripting Reference documentation. But, from a high level, what I think you want is:
function Fade()
{
var fadeTime:float = 1.5;
var targetTime:float = Time.time + fadeTime;
var diff:float = targetTime - Time.time;
while (diff >= 0)
{
target.SetColor(Color.lerp(endColor, startColor, diff/fadeTime));
yield;
diff = targetTime - Time.time;
}
}