- Home /
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;
}
}
Answer by Kleptomaniac · Apr 11, 2012 at 01:37 PM
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
Actually, I'll also clamp rate to 1.5 so we get it exactly right.
Answer by ExTheSea · Apr 11, 2012 at 12:49 PM
Have a look at this:
http://answers.unity3d.com/questions/35610/variable-that-decreases-after-a-certain-amount-of.html
hope this helps you.
Answer by kolban · Apr 11, 2012 at 01:43 PM
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;
}
}
Your answer
Follow this Question
Related Questions
Random time activate/deactivate object 1 Answer
My variable doesn't update real-time? 2 Answers
Problem with time system and variables 1 Answer