Update:每一個frame更新時會被呼叫。
Fixedupdate:每一個固定時間frame更新時會被呼叫。
Update在每一個frame都需要處理的狀況,例如移動、計時器、按鍵滑鼠判斷等等都會用到,需要特別提出來的地方是,Update在被呼叫的間隔並不固定。
我們可以在Update內把Time.deltaTime印出來看看,可以明顯看到每秒最後一個frame的結束時間並不相同。
再來看看Fixedupdate,在Fixedupdate下印出Time.deltaTime,可以看到顯示時間是相同的。
另外Fixedupdate的更新時間是可調整的,在Edit->Project Settings->Time,Fixed Timestep做數值的更動就可以了。
但如果只是時間間隔上的不同,特地使用Fixedupdate的理由又是什麼?
Unity的官方說明提到,如果遇到有關Rigidbody的情況,必須在Fixedupdate中處理。
這裡拿自己的例子來做說明:
角色透過虛擬搖桿移動,碰到障礙物時使用物體碰撞Collider的方式做阻擋。
在Update內運作的情況:
在Fixedupdate內運作的情況:
希望有看出其中的差別,在Update中做處理時,由於移動與剛體的碰撞判定並不是同步的,所以會造成畫面上所看到的抖動問題,而在Fixedupdate中執行可以解決這個問題。
這是先前碰到過的問題,拿出來分享一下,這次就到這裡。
訂閱:
張貼留言 (Atom)
【自製小遊戲】水平思考猜謎(海龜湯)
遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...
-
今天來談帶有rigidbody物件移動的方法,AddForce和velocity。 首先AddForce,是在物體上給予一個方向的外力,是這樣寫的: using UnityEngine; using System.Collections; public class Cont...
-
MMD4Mecanim的用途是把MMD格式檔案( PMX or PMD),在Unity內 轉換成FBX檔案格式的 package , 對不會建模、動畫的人來說,是個方便取得模型的工具, 本篇是照著日文教學,重新再做一遍的中文教學。 環境需求: Unity 3D遊戲引擎...
初學不太了解,請問解決方法是指將移動系統(Touch)由Update搬到FixedUpdate嗎?
回覆刪除感謝!
如果移動會處理到物理碰撞的話,是的。
刪除Jerrard大,下面兩張圖好像死了。
回覆刪除感謝你的提醒,連結失效的問題正在逐步修正中
刪除Hi Jerrard,
回覆刪除Thank you so much for the explanation. But I can't distinguish the difference between Update() and FixUpdate() due to the last two images are still broken.
Jerrard大,下面兩張圖好像再次死了
回覆刪除感謝提醒,已修正
刪除非常好理解的說明 讚讚!!
回覆刪除