Move value to 0 in 1.5 seconds

Hey,

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;
    }
}

Use Mathf.Lerp. So like this:

var startingFade : float = 250;
var timeInSeconds : float = 1.5;
var rate : float;

function Update () {
	if (rate < 1) {
		rate += Time.deltaTime / timeInSeconds;
		rate = Mathf.Clamp(rate, 0, timeInSeconds);
		startingFade = Mathf.Lerp(startingFade, 0, rate);
	}
}

Hope that helps, Klep

Have a look at this:

hope this helps you.

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;
   }
}