Unity-Charactor_Control

Unity

キーボード上下左右に合わせて動作させる

1. スクリプトの作成

  1. Project ウィンドウで右クリックし、Create > C# Scriptを選択します。
  2. 名前を 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という名前のブール値(真偽値)を送り、アニメーションの状態を切り替えます。

コメント