Unity定向灯更新(昼夜效果)

时间:2013-08-25 23:12:13

标签: unity3d delay wait yield light

我在这里写,因为我真的需要你的帮助。我已经在gameObject灯光(Directional)上创建了这个脚本。

var time : int= 0;

function Update () {
    time+=1;
    transform.Rotate(time*Time.deltaTime, 0 ,0);
        yield WaitForSeconds(0.2);
    if (time == 360){
        time = 0;
    }
}

当我开始游戏时,对象不会旋转,如果我删除该行:

   yield WaitForSeconds(0.2);

旋转开始缓慢然后增加速度直到(每2轮)它返回到0。

1 个答案:

答案 0 :(得分:0)

Jerdak是对的。每帧都会调用Update(),而不是每秒都调用time。这样,Update非常快达到360。为了获得自上次调用Time.deltaTime以来经过的时间,请使用transform.Rotate(Time.deltaTime * speed, 0, 0);。这基本上意味着当你执行time时,它会根据你的速度旋转。因此,使用速度测量而不是时间测量。

  

旋转开始缓慢然后增加速度直到(每2个   轮次)它返回0。

这是预期的行为。就像我说的那样,您使用的是speed而不是time。您每0.2秒增加一次速度(命名:{{1}}),从而提高旋转速度。

  

当我开始游戏时,对象不会旋转

我不确定为什么会发生这种情况但是当你等待足够长时间时,你会看到无论如何都会发生旋转。它可能会发生但非常缓慢。