キーボード上下左右に合わせて動作させる
1. スクリプトの作成
- Project ウィンドウで右クリックし、Create > C# Scriptを選択します。
- 名前を
CharacterMovement
とします。
2. スクリプトの記述
作成したスクリプトをダブルクリックして、以下のコードを記述します。
C#
using UnityEngine;
public class CharacterMovement : MonoBehaviour
{
// 移動速度
public float moveSpeed = 3.0f;
// Animatorコンポーネントを格納する変数
private Animator animator;
void Start()
{
// このスクリプトがアタッチされているゲームオブジェクトのAnimatorコンポーネントを取得
animator = GetComponent<Animator>();
}
void Update()
{
// 水平方向の入力(A, Dキー または 左, 右矢印キー)を取得
float horizontalInput = Input.GetAxis("Horizontal");
// 垂直方向の入力(W, Sキー または 上, 下矢印キー)を取得
float verticalInput = Input.GetAxis("Vertical");
// 移動ベクトルを計算
Vector3 moveDirection = new Vector3(horizontalInput, 0f, verticalInput).normalized;
// キャラクターの移動
transform.position += moveDirection * moveSpeed * Time.deltaTime;
// 移動しているかどうかを判定
bool isMoving = moveDirection.magnitude > 0.1f;
// Animatorのパラメータを制御
// このパラメータは、後でAnimatorウィンドウで作成します
animator.SetBool("isWalking", isMoving);
// キャラクターの向きを移動方向に合わせる
if (isMoving)
{
Quaternion toRotation = Quaternion.LookRotation(moveDirection, Vector3.up);
transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, Time.deltaTime * 10.0f);
}
}
}
コードの解説:
moveSpeed
: キャラクターの移動速度を設定します。Input.GetAxis("Horizontal")
とInput.GetAxis("Vertical")
: キーボードの入力(WSADキーや矢印キー)を取得します。transform.position += ...
: キャラクターを移動させます。Time.deltaTime
をかけることで、フレームレートに依存しないスムーズな移動になります。moveDirection.magnitude > 0.1f
: キャラクターが実際に移動しているかを判定します。animator.SetBool("isWalking", isMoving)
: アニメーターコントローラーにisWalkingという名前のブール値(真偽値)を送り、アニメーションの状態を切り替えます。
コメント