通常使用CharacterController控制玩家移動時,我們都會寫以下代碼:
void Update() { var move = (moveTarget - transform.Position) * role.MoveSpeed; role.characterController.Move(move * Time.deltaTime); }
經過調試,當玩家與目標點越接近時,move值會越來越小,表現為與目標點越近速度越慢。
修改后
//保證每次move的值一樣 var offset = (moveTarget - transform.position); if (offset.sqrMagnitude > 0.01f) { offset = offset.normalized * role.MoveSpeed; role.characterController.Move(offset * Time.deltaTime);
參考:http://answers.unity3d.com/questions/550472/move-character-controller-to-a-point.html