跑酷游戲的一些bug總結(濫用FixedUpdate的坑)


最近把1年前的跑酷游戲demo拿出來重做了一遍,解決了2個之前的遺留bug。

雖然罪魁禍首都是FixedUpdate,但細節又不太一樣。這里記錄一下

 

1.點擊空格鍵,角色會跳躍。而有時會跳的比之前高很多(使用Rigidbody.AddForce)

 

解決:

AddForce之前應該清一下速率,因為是射線檢測是否碰到地面,而跳躍后不會立刻離地。

如果不清,后面幾幀會累加AddForce

清除速率保證離地的一瞬間肯定是正常Force,而非累加Force

 

 

2.有時候接收不到鍵盤按下的事件

 

解決:

這個比較奇葩,原因是輸入檢測寫在FixedUpdate里:

void FixedUpdate()
{
    if (Input.GetKeyDown(jumpKey))
    {
        //Magic Bug
    }
}

 

但用GetKey,檢測是否處於長按狀態又正常

void FixedUpdate()
{
    if (Input.GetKey(jumpKey))
    {
        //Great
    }
}

 

當然,最終解決方法是放到Update里去處理,漏檢率0。

void Update()
{
    if (Input.GetKeyDown(jumpKey))
    {
        //Great
    }
}

 

因為FixedUpdate存在漏幀的情況,它是基於秒的。或者准確的說是基於物理步更新

放在物理步的函數中處理本身就是錯誤的做法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM