如何让Time.time两秒钟?

时间:2014-09-08 09:39:40

标签: colors unity3d unityscript

var targetscript : Diamond;
var red : Color;
var orange : Color;

function Start () {
    gameObject.camera.backgroundColor = red;
}

function Update () {
    if (targetscript.score > 4) {
        gameObject.camera.backgroundColor = Color.Lerp(red, orange, Time.time);
    }
}

所以现在,如果分数大于4,那么它将使用lerp将相机背景颜色更改为橙​​色。但它太快了。我在网上看到Time.time是1秒。什么是替代方式但是2或3秒?我试过这个:http://answers.unity3d.com/questions/328891/controlling-duration-of-colorlerp-in-seconds.html我尝试了投票答案的代码,但它没有用。它仍然快速通过。有没有人有任何想法?感谢

2 个答案:

答案 0 :(得分:0)

Time.time为您提供自游戏开始以来的秒数。你想要的是Time.deltaTime,它是每帧之间的时差。

var targetscript : Diamond;
var red : Color;
var orange : Color;
var t : float = 0;
var duration : float = 3.0; //however long you want it to be

function Start () {
    gameObject.camera.backgroundColor = red;
}

function Update () {
    if (targetscript.score > 4) {
        gameObject.camera.backgroundColor = Color.Lerp(red, orange, t);
        t += Time.deltaTime/duration;
    }
}

答案 1 :(得分:0)

Color.Lerp(颜色a,颜色b,浮点t),所以:
- > t = 0,颜色结果为
- > t = 0.5,颜色结果是半个半b - > t = 1.0,颜色结果为b

基于该定义,当Time.time返回值> = 1.0时,将完成Lerp。这就是为什么你的代码在1秒内完成的原因 所以,您可以像这样更改更新功能:

var duration : float = 3.0; //however long you want it to be
function Update ()
{
    if (targetscript.score > 4)
    {
        gameObject.camera.backgroundColor = Color.Lerp(red, orange, Time.time / duration);
    }
}

这将使Lerp与持续时间完全一致。因为 Time.time / duration> =当Time.time> =持续时间时为。