固定時間步長(Fixed Timestep)

在 Unity 中,它的物理系統使用固定時間步長(Fixed Timestep),Unity 提供 FixedUpdate 作為我們程式碼的入口(entry point),你可以在這邊執行與物理相關的程式碼,例如向 Rigidbody 施加力。

fixedDeltaTime 是 Unity 中控制固定時間步長循環間隔的屬性,以秒為單位。

  • 例如,當 fixedDeltaTime為 0.01 時意味著每個固定時間步長持續 1/100 秒,因此每秒會執行 100 次固定更新

當你的APP執行的幀率高於每秒固定時間步長(Fixed Timestep)時,這表示每個幀的持續時間會比單個固定時間步長的持續時間還要短。

  • 例如,如果 fixedDeltaTime 設為 0.02,那麼通常每秒會有 50 次固定更新。
    • 如果你的 APP 以每秒 60 幀的速度執行,這會超過每秒 50 次的固定更新,這表示大約每十幀中會有一幀不會觸發固定更新。

如果你的 APP 的幀率低於固定時間步長值,這意味著每個幀的持續時間比單個固定時間步長還要長。為了解決這個問題,Unity 每幀會執行一個或多個固定更新,以便物理模擬能夠趕上自上一幀以來流逝的時間。

  • 例如,如果你的固定時間步長值為 0.01,每秒會執行 100 次固定更新。如果你的應用以每秒 25 幀的速度運行,每幀的持續時間(0.04 秒)是固定時間步長值(0.01 秒)的四倍, Unity 將每幀執行四次固定更新。在幀率較低時,Unity 通過增加固定更新次數來保持物理模擬的準確性。

fixedDeltaTime 設定的越低,表示越頻繁的執行物理更新,模擬的越精確,但是會加大 CPU 的負擔。

返回 時間與幀 大綱

評論