Unity 3Dにおけるファーストパーソンの移動方法


  1. キャラクターコントローラーを使用する方法: キャラクターコントローラーは、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);
       }
    }
  2. キャラクターコントローラーを使用せずに 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の公式ドキュメントやチュートリアルを参考にしてください。