2017-01-02 62 views
1

我在Unity中进行机器学习仿真,我只需要一些我的逻辑保证。所有的物理事件都发生在FixedUpdate()中,所以据我所知,帧速率的波动不会影响我的结果,因为每个周期都会进行正确数量的物理调用(我将时间刻度设置的很高)。这是否适用于帧速率非常低时,比如1-5 fps?我可以保证,只要我能够保持1或更高的帧率,就会调用正确的物理步骤数。以非常低的帧运行Unity仿真

谢谢

回答

1

你甚至不需要为它的帧率1工作。物理循环和显示循环(FixedUpdate() vs Update())彼此独立。即使您的FPS帧速率低于1,您的物理更新仍然可以正确应用,但它只会在呈现下一个显示帧之前执行多个物理步骤以“赶上”。请参阅this article from the unity documentation以获取有关订购事宜的更多信息。

image

+0

所以我永远不会'失去'物理步骤?例如,如果时间尺度设置得如此之高以至于我的计算机性能成为一个因素,那么分配给物理步骤的时间不足以完成所有计算? – Amposter

+0

只要你不修改物理更新循环之外的'RigidBody'的位置,你永远不会丢失任何“物理框架”。如果你用'RigidBody'修改游戏对象的位置,你可能会得到不正确的物理计算结果。在[时间管理器](https://docs.unity3d.com/Manual/class-TimeManager.html)中增加“Maximum Allowed Timestep”的值,以便物理学有更多时间追赶或重写代码,在更新帧中移动一个RigidBody对象... –

+0

**重要注意事项:**它不需要是导致移动的'Update()'调用,如果您的子对象具有'RigidBody'并且在动画更新过程中,您可以在父母上创建动画,并可以移动“RigidBody”。 –