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に近づく。
- Dキー(右)が押されると徐々に
- “Vertical”: Wキー・Sキーまたは上矢印・下矢印に対応しています。
- Wキー(前)が押されると徐々に
1.0fに近づく。 - Sキー(後)が押されると徐々に
-1.0fに近づく。
- Wキー(前)が押されると徐々に
この仕組みを使うことで、キーを離したときに移動がゆっくりと止まる(スムーズな移動)効果も自動的に得られます。
実行方法
PlayerMovement.cs(または編集したスクリプト)を保存します。- Unityエディタの再生ボタン(▶)を押してゲームを開始します。
- W/A/S/Dキーを押して、Cubeが動くことを確認しましょう。Inspectorで
Speedの値を変更すると、移動速度が変わることも試してみてください。

コメント