c# - Unity 3d,什么是 Universe.physicsTimeStep?
问题描述
我试图复制这个太阳系模拟项目,我有一个问题:
什么是“Universe.physicsTimeStep”?我在统一手册和脚本 API 中进行了搜索,但没有找到任何东西。有人可以解释一下吗?谢谢
解决方案
从历史上看,当游戏模拟物理时,他们通过每帧更新一次物理模拟来做到这一点。例如,要查找经过的距离,他们将使用速度 * timeStep,其中 timeStep 是帧之间的时间。
如今,尤其是使用多线程游戏引擎,物理模拟(在某种程度上)独立于其他模拟和渲染运行。例如,可以以每秒 60 帧的速度进行渲染,但物理仅每隔一帧更新一次(即 30 FPS)。物理模拟更新得越频繁(即时间步长越小),物理模拟就越准确。
有时,会调整各种系统的时间步长,以使游戏“正常”运行,即使硬件是一个限制因素。通常这是通过“丢弃”(即跳过)渲染帧来完成的,但也可以丢弃更新帧。一些游戏,尤其是平台游戏和其他物理非常重要的游戏,将始终以相同的时间步长运行物理模拟,以便在较慢的 CPU 上运行它(这将导致更高的时间步长)不会影响游戏玩法,例如就像让困难的跳跃变得更容易一样。
在您的情况下, Universe.physicsTimeStep 似乎是用于游戏更新的时间步长。它似乎也是一个固定的时间步长,所以它总是一样的。如果游戏运行缓慢,它会丢弃渲染帧,但会不断更新物理。
推荐阅读
- apache-flink - Flink 1.12.0 on yarn 无法识别 yn
- python - 在 Flask HTML 模板中显示临时文件图像?
- primary-key - 为什么要为 ClickHouse 主键读取最多 index_granularity * 2 额外行?
- c++ - 具有特征矩阵的 Stl 迭代器
- javascript - 悬停在循环 JS/jquery 中的一个元素会改变另一个元素
- javascript - 使用扫描线循环绘制填充多边形
- android - 片段事务后Android滚动视图保持滚动位置
- java - 为什么我的可执行 jar 找不到主类?
- javascript - 属性-属性同步
- java - ConcurrentHashMap 的 forEach 方法是线程安全的吗?