Unityの一人称視点の移動スクリプトの実装方法


  1. CharacterControllerを使用する方法: CharacterControllerはUnityの標準コンポーネントであり、簡単に一人称視点の移動を実現することができます。以下はCharacterControllerを使用した移動スクリプトの例です。
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
    private CharacterController controller;
    private float speed = 5f;
    private void Start()
    {
        controller = GetComponent<CharacterController>();
    }
    private void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector3 moveDirection = transform.forward * vertical + transform.right * horizontal;
        controller.Move(moveDirection * speed * Time.deltaTime);
    }
}

このスクリプトでは、CharacterControllerコンポーネントを使用して移動を制御しています。Input.GetAxisを使用してキーボードの入力を取得し、移動方向を計算しています。計算された移動方向に速度を乗算し、Time.deltaTimeでフレームレートに依存しない移動を実現しています。

  1. Rigidbodyを使用する方法: もう一つの方法は、Rigidbodyコンポーネントを使用して一人称視点の移動を実装する方法です。以下はRigidbodyを使用した移動スクリプトの例です。
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
    private Rigidbody rb;
    private float speed = 5f;
    private void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.freezeRotation = true; // プレイヤーの回転を制限する場合に設定
    }
    private void FixedUpdate()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector3 movement = new Vector3(horizontal, 0f, vertical);
        rb.AddRelativeForce(movement * speed);
    }
}

このスクリプトでは、Rigidbodyコンポーネントを使用して移動を制御しています。Input.GetAxisを使用してキーボードの入力を取得し、移動方向を計算しています。計算された移動方向に速度を乗算し、AddRelativeForceメソッドで力を加えることで移動を実現しています。

これらは一部の一人称視点の移動スクリプトの例です。プロジェクトの要件や好みに合わせて調整し、さまざまな機能や制約を追加することもできます。詳細についてはUnityの公式ドキュメントやコミュニティのリソースを参考にしてください。