x


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

asked Apr 11 '12 at 12:36 PM

Dreeka gravatar image

Dreeka
129 50 62 65

(comments are locked)
10|3000 characters needed characters left

3 answers: sort voted first

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

more ▼

answered Apr 11 '12 at 01:37 PM

Kleptomaniac gravatar image

Kleptomaniac
2.5k 6 11 21

Actually, I'll also clamp rate to 1.5 so we get it exactly right.

Apr 11 '12 at 01:53 PM Kleptomaniac
(comments are locked)
10|3000 characters needed characters left
more ▼

answered Apr 11 '12 at 12:49 PM

ExTheSea gravatar image

ExTheSea
2k 12 23 30

(comments are locked)
10|3000 characters needed characters left

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

answered Apr 11 '12 at 01:43 PM

kolban gravatar image

kolban
1.8k 2 7

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x824
x572

asked: Apr 11 '12 at 12:36 PM

Seen: 485 times

Last Updated: Apr 11 '12 at 01:54 PM