[Unity] 3D 角色移動鍵盤控制腳本

發表日期:
2019.11.27
/
分類:
一般來說,要控制角色移動的話我們通常都會使用 transform.position 加減換算或 rigidbody.MovePosition。而今天我在 Unity 官方提供的遊戲範本中找到了

一般來說,要控制角色移動的話我們通常都會使用 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(); m_InputHandler = GetComponent(); } 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,完成。

相關文檔:


遊戲開發這系列的文章,依據我個人的學習進度隨時有可能會進行修正,如果有相關話題也歡迎留言討論。

comments powered by Disqus