⌨️ Unity:キー入力による移動の解説

Unity

1. スクリプトの準備

前の例で作成したMover.cs(または新しくPlayerMovement.csなど)を使います。このスクリプトがプレイヤーオブジェクト(例:Cube)にアタッチされていることを確認してください。

2. キー入力の判定方法

Unityでは、ユーザーの入力を取得するためにInputクラスを使用します。

関数名役割使い方
Input.GetKey(KeyCode.キー名)指定したキーが押されている間、常にtrueを返す。Input.GetKey(KeyCode.Space)(スペースキーが押されている間)
Input.GetKeyDown(KeyCode.キー名)指定したキーが押された瞬間の1フレームだけtrueを返す。Input.GetKeyDown(KeyCode.Space)(ジャンプなどに最適)

3. コード例:前後左右の移動

ここでは、W/A/S/Dキーを使って、オブジェクトを前後左右に動かすコードをUpdate()関数内に記述します。

C#

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    // 移動速度をInspectorから設定できるようにする
    public float speed = 5.0f; 

    void Update()
    {
        // ----------------------------------------------------------------
        // 1. 入力を取得する
        // ----------------------------------------------------------------
        
        // Wキーまたは上矢印キーが押されていると 1.0f、Sキーまたは下矢印キーだと -1.0f、何も押されていなければ 0.0f を返す
        float horizontalInput = Input.GetAxis("Horizontal"); // A/Dまたは左右矢印
        float verticalInput = Input.GetAxis("Vertical");   // W/Sまたは上下矢印

        // ----------------------------------------------------------------
        // 2. 移動の方向ベクトルを計算する
        // ----------------------------------------------------------------

        // 入力に基づいて移動方向のベクトルを作成
        // Yは地面と並行な移動の場合、通常 0 を使う
        Vector3 movementDirection = new Vector3(horizontalInput, 0, verticalInput);

        // ----------------------------------------------------------------
        // 3. 実際にオブジェクトを移動させる
        // ----------------------------------------------------------------

        // transform.Translateで移動
        // movementDirectionを正規化(Normalize)しなくても、GetAxisが-1から1の値を取るため、入力がないときはVector3.zeroになる。
        // speedとTime.deltaTimeをかけて、フレームレートに依存しないスムーズな移動を実現
        transform.Translate(movementDirection * speed * Time.deltaTime);
    }
}

💡 コードの解説(Input.GetAxisについて)

このコードの肝は**Input.GetAxis()**です。

  • Input.GetAxis("Horizontal") / Input.GetAxis("Vertical")
    • これはUnityのInput Managerにあらかじめ設定されている仮想軸の名前です。
    • “Horizontal”: キーボードのAキー・Dキーまたは左矢印・右矢印に対応しています。
      • Dキー(右)が押されると徐々に1.0fに近づく。
      • Aキー(左)が押されると徐々に-1.0fに近づく。
    • “Vertical”: Wキー・Sキーまたは上矢印・下矢印に対応しています。
      • Wキー(前)が押されると徐々に1.0fに近づく。
      • Sキー(後)が押されると徐々に-1.0fに近づく。

この仕組みを使うことで、キーを離したときに移動がゆっくりと止まる(スムーズな移動)効果も自動的に得られます。

実行方法

  1. PlayerMovement.cs(または編集したスクリプト)を保存します。
  2. Unityエディタの再生ボタン(▶)を押してゲームを開始します。
  3. W/A/S/Dキーを押して、Cubeが動くことを確認しましょう。InspectorでSpeedの値を変更すると、移動速度が変わることも試してみてください。

コメント