【问题标题】:In Unity3D, using Time.DeltaTime doesn't result in framerate independence在 Unity3D 中,使用 Time.DeltaTime 不会导致帧率独立
【发布时间】:2013-08-07 17:36:24
【问题描述】:

我正在尝试在确定的时间内将某些物品穿过特定的指定距离。我正在使用 Time.DeltaTime 来实现帧率独立。但是,当借助性能非常密集的函数(将帧速率降至理论上的 10-15fps)强制延迟时,我的对象移动速度比应有的慢得多,即使它们应该在恒定时间内移动,与帧速率无关(它们需要大约两倍长,4 秒而不是 2 秒)。

更奇怪的是计算出的 FPS (1.0f/Time.deltaTime) 保持不变(大约 66 FPS)。当我显示 lerp 完成所需的时间(将 time.deltaTimes 相加)时,它显示 2 秒(这是所需的时间,但实际花费的时间至少是该时间的 2 倍)。

谁能帮我弄清楚发生了什么?

    var startTime = 0.0;
    while(startTime < 2.0){
        yield;
        startTime += Time.deltaTime;
        transform.localPosition = Vector3.Lerp(Vector3(0.0,0.0,0.0), Vector3(0.0,10.0,0.0), startTime/2.0);
    }

【问题讨论】:

  • 在你应用增量的地方显示一些代码?
  • 代码看起来应该可以工作。 Time.timeScale 的值是多少?

标签: time unity3d frame-rate timedelta


【解决方案1】:

如果您的最大允许时间步长足够高,请检查您的项目时间设置(在编辑->项目设置->时间下)。该值应该足够高,以允许您想要的最低 FPS。例如,Max.Timestep 为 0.1 将允许 10FPS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多