【问题标题】:Unity 3d, What Universe.physicsTimeStep is?Unity 3d,什么是 Universe.physicsTimeStep?
【发布时间】:2020-05-06 11:41:32
【问题描述】:

我试图复制this solar system simulation project,我有一个问题:

什么是“Universe.physicsTimeStep”?我在统一手册和脚本 API 中进行了搜索,但没有找到任何东西。有人可以解释一下吗?谢谢

【问题讨论】:

  • 这不是 Unity 内置的,而是您的教程制作者在某处实现的...

标签: c# unity3d


【解决方案1】:

从历史上看,当游戏模拟物理时,他们通过每帧更新一次物理模拟来实现。例如,要查找经过的距离,他们将使用速度 * timeStep,其中 timeStep 是帧之间的时间。

如今,尤其是使用多线程游戏引擎,物理模拟(在某种程度上)独立于其他模拟和渲染运行。例如,渲染可以以每秒 60 帧的速度完成,但物理仅每隔一帧更新一次(即 30 FPS)。物理模拟更新的频率越高(即时间步长越小),物理模拟就越准确。

有时,会调整各种系统的时间步长,以使游戏“正常”运行,即使硬件是一个限制因素。通常这是通过“丢弃”(即跳过)渲染帧来完成的,但也可以丢弃更新帧。一些游戏,尤其是平台游戏和其他物理非常重要的游戏,将始终以相同的时间步长运行物理模拟,以便在较慢的 CPU 上运行它(这将导致更高的时间步长)不会影响游戏玩法,例如就像让困难的跳跃变得更容易。

在您的情况下,Universe.physicsTimeStep 似乎是用于游戏更新的时间步长。它似乎也是一个固定的时间步长,所以它总是一样的。如果游戏运行缓慢,它会丢弃渲染帧,但会不断更新物理效果。

【讨论】:

    【解决方案2】:

    这是 Universe 类中的公共常量(您应该看到 Sebastian Lague 的太阳系 Github 存储库。 里面写的很清楚

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      相关资源
      最近更新 更多