最近在做Unity腳色移動控制時遇上了一個問題: 一般讓角色移動的方式有兩類:
- 給物體加個Force/Velocity
- 偵測一次方向鍵移動一次
第一種情況不會有延遲的問題,因為只需要偵測方向鍵即可改變移動方向跟移動向量
問題在於第二種,因為Unity的Update與FixedUpdate是以每一幀為單位,但這樣會遇到一個問題, 假設我在玩遊戲時我想使玩家連續移動,於是我按了5下右鍵,這時有可能在第一幀移動了一個單位, 但剩下的4格單位卻在下一幀一瞬間移動完,造成有瞬間移動大量距離的情形。 於是我用Timer去計時,修改成: 每一秒只偵測一次按鍵,然後動作完就把所有的設定清除掉。
ResetInputAxes: 在一帧中重置所有的输入,重置输入指令之后所有的方向轴都被设置为0并且所有的 按键都被设置为0。
(網址來源:http://www.ceeger.com/Script/Input/Input.ResetInputAxes.html)
這樣就可以解決問題了,概念有點像C/C++的fflush清空前一次輸入的Buffer。
time = time + Time.deltaTime; |