-
キャラクターコントローラーを使用する方法: キャラクターコントローラーは、Unityの標準的なコンポーネントで、簡単にファーストパーソンの移動を実現することができます。以下のステップで実装できます。
- プレイヤーキャラクターにキャラクターコントローラーコンポーネントを追加します。
- キャラクターコントローラーのスクリプトを作成し、移動やジャンプなどの入力を処理します。
- スクリプトで移動に関するパラメーター(スピード、ジャンプ力など)を設定します。
- 入力に応じてキャラクターコントローラーを操作し、移動を実現します。
以下は、キャラクターコントローラーを使用した移動のコード例です。
using UnityEngine; public class PlayerMovement : MonoBehaviour { public CharacterController controller; public float speed = 3f; public float gravity = -9.81f; public float jumpHeight = 1f; private Vector3 velocity; void Update() { float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); Vector3 move = transform.right * x + transform.forward * z; controller.Move(move * speed * Time.deltaTime); velocity.y += gravity * Time.deltaTime; if (controller.isGrounded && velocity.y < 0) { velocity.y = -2f; } if (Input.GetButtonDown("Jump") && controller.isGrounded) { velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity); } controller.Move(velocity * Time.deltaTime); } }
-
キャラクターコントローラーを使用せずに Rigidbody を利用する方法: キャラクターコントローラーを使用しない場合、代わりに Rigidbody コンポーネントを使用して移動を制御することができます。以下のステップで実装できます。
- プレイヤーキャラクターに Rigidbody コンポーネントを追加します。
- スクリプトで入力を処理し、Rigidbody の AddForce メソッドを使用して移動を実現します。
- 移動に関するパラメーター(スピード、ジャンプ力など)を設定します。
以下は、Rigidbody を使用した移動のコード例です。
using UnityEngine; public class PlayerMovement : MonoBehaviour { public Rigidbody rb; public float speed = 3f; public float jumpForce = 5f; void Update() { float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); Vector3 move = transform.right * x + transform.forward * z; rb.AddForce(move * speed); if (Input.GetButtonDown("Jump")) { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); } } }
これらの方法を使用することで、Unity 3Dでファーストパーソンの移動を実装することができます。詳細な説明や他の移動方法については、Unityの公式ドキュメントやチュートリアルを参考にしてください。