- 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でフレームレートに依存しない移動を実現しています。
- 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の公式ドキュメントやコミュニティのリソースを参考にしてください。