一般來說,要控制角色移動的話我們通常都會使用 transform.position 加減換算或 rigidbody.MovePosition。而今天我在 Unity 官方提供的遊戲範本中找到了一個還蠻好用的鍵盤控制腳本,特此紀錄一下。
操作紀錄
第一步 先建一個 PlayerInputHandler.cs,加入 GetMoveInput 函式。
public Vector3 GetMoveInput() { Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")); move = Vector3.ClampMagnitude(move, 1); return move; }
第二步 再建一個 PlayerController.cs,加入以下程式碼。
public float moveSpeed; CharacterController m_Controller; PlayerInputHandler m_InputHandler; Vector3 characterVelocity; private void Start() { m_Controller = GetComponent<CharacterController>(); m_InputHandler = GetComponent<PlayerInputHandler>(); } private void Update() { HandleMovement(); } private void HandleMovement() { Vector3 worldspaceMoveInput = transform.TransformVector(m_InputHandler.GetMoveInput()); Vector3 targetVelocity = worldspaceMoveInput * moveSpeed; characterVelocity = Vector3.Lerp(characterVelocity, targetVelocity, 0.5f); m_Controller.Move(characterVelocity * Time.deltaTime); }
最後將這兩個腳本帶入遊戲角色物件,Move Speed 填入 10,並加入一個 Character Controller Component,完成。
相關文檔:
遊戲開發這系列的文章,依據我個人的學習進度隨時有可能會進行修正,如果有相關話題也歡迎留言討論。