問題說明
這是一個很基礎的 FPS 控制問題,在 Unity 中,我們應該要用 FixedUpdate() 來實作角色移動功能,而不是 Update()。
為什麼這麼說呢?我們先來對照一下 FixedUpdate() 與 Update() 用 Unity Recoder 輸出後的結果:
https://www.youtube.com/watch?v=SpVDXldakKM
https://www.youtube.com/watch?v=xdRolNCgd8A
你可以明顯地觀察到 Update() 在 Unity Recoder 之中出現了嚴重滯後的情形,但是在 FixedUpdate() 中卻較為正常。主要是 Unity Recoder 在錄影中會拖累 FPS 更新,當你是使用不穩定的 Update() 的時候就容易出現超級緩慢、忽快忽慢的狀況。
而 FixedUpdate() 會嚴格遵守你規定的更新時間來執行 (預設為 0.02 秒),就不會被延遲影響。
解決辦法
修改控制角色移動與子彈的腳本,將有關於物理、移動的程式碼改到 FixedUpdate() 中,即可解決。
void FixedUpdate() // Update() -> FixedUpdate()
{
lifeText.text = life.ToString();
transform.position = path[index];
index++;
if(index == path.Count){
GameObject.Find(“GM”).GetComponent
留言板
歡迎提問或分享觀點!