【问题标题】:Unity Directional light update (day-night effect)unity Directional light 更新(昼夜效果)
【发布时间】:2013-08-28 09:12:18
【问题描述】:

我写在这里是因为我真的需要你的帮助。我已经创建了链接在游戏对象灯(定向)上的这个脚本。

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。

【问题讨论】:

  • 那么问题是什么?当yield ... 在代码中时,您不知道为什么旋转不起作用,或者您不知道为什么对象的速度会缓慢增加?第二部分很简单,Rotate 是一个相对函数,意味着每次调用都会将输入值附加到当前旋转。只需执行transform.Rotate(Time.deltaTime *speed,0,0) 就可以了。
  • 有两个问题:第一:为什么当我添加产量时什么都没有发生?第二:为什么,如果我去掉产量,旋转速度会增加? (我想增加旋转,而不是旋转速度)

标签: unity3d delay wait yield light


【解决方案1】:

杰达克是对的。 Update() 每帧调用一次,而不是每秒调用一次。这样,time 可以非常快地达到 360。要获取自上次调用 Update 以来经过的时间,请使用 Time.deltaTime。这基本上意味着当您执行transform.Rotate(Time.deltaTime * speed, 0, 0); 时,它会根据您的速度旋转。所以使用速度测量而不是时间测量。

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

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

当我开始游戏时,物体不旋转

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2022-06-17
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多