首页 > 解决方案 > Unity 3d,什么是 Universe.physicsTimeStep?

问题描述

我试图复制这个太阳系模拟项目,我有一个问题:

在此处输入图像描述

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

标签: c#unity3d

解决方案


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

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

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

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


推荐阅读