【发布时间】:2020-05-06 11:41:32
【问题描述】:
我试图复制this solar system simulation project,我有一个问题:
什么是“Universe.physicsTimeStep”?我在统一手册和脚本 API 中进行了搜索,但没有找到任何东西。有人可以解释一下吗?谢谢
【问题讨论】:
-
这不是 Unity 内置的,而是您的教程制作者在某处实现的...
我试图复制this solar system simulation project,我有一个问题:
什么是“Universe.physicsTimeStep”?我在统一手册和脚本 API 中进行了搜索,但没有找到任何东西。有人可以解释一下吗?谢谢
【问题讨论】:
从历史上看,当游戏模拟物理时,他们通过每帧更新一次物理模拟来实现。例如,要查找经过的距离,他们将使用速度 * timeStep,其中 timeStep 是帧之间的时间。
如今,尤其是使用多线程游戏引擎,物理模拟(在某种程度上)独立于其他模拟和渲染运行。例如,渲染可以以每秒 60 帧的速度完成,但物理仅每隔一帧更新一次(即 30 FPS)。物理模拟更新的频率越高(即时间步长越小),物理模拟就越准确。
有时,会调整各种系统的时间步长,以使游戏“正常”运行,即使硬件是一个限制因素。通常这是通过“丢弃”(即跳过)渲染帧来完成的,但也可以丢弃更新帧。一些游戏,尤其是平台游戏和其他物理非常重要的游戏,将始终以相同的时间步长运行物理模拟,以便在较慢的 CPU 上运行它(这将导致更高的时间步长)不会影响游戏玩法,例如就像让困难的跳跃变得更容易。
在您的情况下,Universe.physicsTimeStep 似乎是用于游戏更新的时间步长。它似乎也是一个固定的时间步长,所以它总是一样的。如果游戏运行缓慢,它会丢弃渲染帧,但会不断更新物理效果。
【讨论】:
这是 Universe 类中的公共常量(您应该看到 Sebastian Lague 的太阳系 Github 存储库。 里面写的很清楚
【讨论】: