2017-01-02 16 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」。 –