【Unity】KeyCode完全ガイド!よく使う入力判定から実践活用まで徹底解説【備忘録】

はじめに

Unityでゲームを作る際に「キーボード入力の取得」は欠かせません。
その中でも重要なのが、**KeyCode(キーコード)**という概念です。

この記事では、

  • KeyCodeとは何か?
  • どのように使うのか?
  • よく使うKeyCode一覧
  • Inputクラスとの組み合わせ
  • 実践的な使い方

などを7000文字に渡って徹底的に解説していきます。
これを読めば、Unityでのキーボード入力判定に困ることはなくなります!


KeyCodeとは?

**KeyCodeは、Unityで使用されるキーボード入力を表す列挙型(enum)**です。

例:

if (Input.GetKeyDown(KeyCode.Space)) {
    Debug.Log("スペースキーが押された!");
}

このように、プレイヤーがキーボードのキーを押したかどうかを簡単に検出できます。


Unityにおける入力取得の基本

Unityでは、ユーザーのキーボード操作を取得するために、InputクラスとKeyCodeを組み合わせて使います。代表的なメソッドは以下の通りです。

メソッド概要
Input.GetKey()キーが押されている間に true を返す
Input.GetKeyDown()キーが押された瞬間に true を返す
Input.GetKeyUp()キーが離された瞬間に true を返す

よく使うKeyCode一覧【保存版】

以下はUnityで頻繁に使用されるキーのKeyCode一覧です。

方向キー(矢印キー)

KeyCode.UpArrow    // ↑
KeyCode.DownArrow  // ↓
KeyCode.LeftArrow  // ←
KeyCode.RightArrow // →

文字キー(A~Z)

KeyCode.A
KeyCode.B
...
KeyCode.Z

数字キー(上部の数字)

KeyCode.Alpha0
KeyCode.Alpha1
...
KeyCode.Alpha9

数字キー(テンキー)

KeyCode.Keypad0
KeyCode.Keypad1
...
KeyCode.Keypad9

機能キー・その他

KeyCode.Space       // スペース
KeyCode.Return      // Enter
KeyCode.Escape      // Esc
KeyCode.Backspace   // バックスペース
KeyCode.Tab         // タブ
KeyCode.LeftShift   // 左Shift
KeyCode.RightShift  // 右Shift
KeyCode.LeftControl // 左Ctrl
KeyCode.RightControl// 右Ctrl
KeyCode.LeftAlt     // 左Alt
KeyCode.RightAlt    // 右Alt


Input.GetKey系の使い分け

GetKey()

if (Input.GetKey(KeyCode.W)) {
    Debug.Log("Wキーが押され続けている");
}

ゲームの移動処理などで、キーを押しっぱなしにしている間の動作に使います。


GetKeyDown()

if (Input.GetKeyDown(KeyCode.Space)) {
    Debug.Log("ジャンプ!");
}

アクションのトリガーなど、一度だけの反応が欲しいときに使います。


GetKeyUp()

if (Input.GetKeyUp(KeyCode.R)) {
    Debug.Log("Rキーを離した!");
}

キーを離したときのアクションに利用可能です。


よくある間違いと対策

間違い①:GetKeyDownの継続使用

// NG例
if (Input.GetKeyDown(KeyCode.W)) {
    transform.Translate(Vector3.forward * Time.deltaTime);
}

これでは、キーを押した瞬間にしか移動しません。移動処理にはGetKey()を使いましょう。


間違い②:キー名のスペルミス

KeyCodeは大文字小文字を区別します。たとえば、KeyCode.wは存在しません。

✅ 正しい例:

KeyCode.W


キーコンフィグ機能を作るならKeyCodeは必須!

プレイヤーがキー設定をカスタマイズできるようにするには、KeyCodeを動的に管理する必要があります。

public KeyCode jumpKey = KeyCode.Space;

void Update() {
    if (Input.GetKeyDown(jumpKey)) {
        Jump();
    }
}

さらに、設定をPlayerPrefsなどで保存・読込できるようにすれば、柔軟性のあるキー設定が可能です。


実践的なサンプルコード集

WASD移動とジャンプ

void Update() {
    Vector3 direction = Vector3.zero;

    if (Input.GetKey(KeyCode.W)) direction += Vector3.forward;
    if (Input.GetKey(KeyCode.S)) direction += Vector3.back;
    if (Input.GetKey(KeyCode.A)) direction += Vector3.left;
    if (Input.GetKey(KeyCode.D)) direction += Vector3.right;

    transform.Translate(direction.normalized * 5f * Time.deltaTime);

    if (Input.GetKeyDown(KeyCode.Space)) {
        Debug.Log("ジャンプ!");
        // Rigidbodyにジャンプ力を加えるなど
    }
}


デバッグ用の隠しコマンド実装

if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.D)) {
    Debug.Log("デバッグモードON");
}

複数キーを組み合わせたショートカット実装も簡単にできます。


KeyCodeは非推奨になる?【最新情報】

UnityのInput System(新しい入力方式)では、KeyCodeの代わりにKeyInputActionを使うことが推奨されています。

ただし、従来のMonoBehaviourベースの開発では、まだまだKeyCodeは現役です。軽量なゲームやプロトタイプ開発では十分な選択肢です。


補足:KeyCodeを文字列で取得する方法

文字列からKeyCodeに変換するには、Enum.Parseを使います。

string keyName = "Z";
KeyCode code = (KeyCode)Enum.Parse(typeof(KeyCode), keyName);

if (Input.GetKeyDown(code)) {
    Debug.Log("Zキーが押された");
}

これを応用すれば、設定ファイルやUI入力からキーを動的に反映できます。


KeyCodeに関するFAQ

Q. マウスボタンはKeyCodeで取得できる?

A. マウスボタンはInput.GetMouseButton()などで取得します。
マウスクリックはKeyCode.Mouse0などでは取得できません。


Q. 特殊キー(F1〜F12など)は使える?

A. はい、以下のように対応しています。

KeyCode.F1
KeyCode.F2
...
KeyCode.F12


Q. 日本語入力(かな/英数)には対応している?

A. 一部の特殊キー(変換、無変換、英数など)はKeyCodeで対応できません。代替策として、新Input Systemを使うか、OS依存のコードが必要です。


まとめ|KeyCodeはUnity開発の基本

Unityでキーボード入力を扱ううえで、KeyCodeの理解はとても重要です。

本記事のポイントを振り返ります:

✅ KeyCodeはキーボードの各キーに対応する定数
✅ Input.GetKey()などと組み合わせて使用
✅ 移動、ジャンプ、メニュー表示など多様な用途に活用可能
✅ キーコンフィグやショートカットキー実装も簡単
✅ 新Input Systemでも基本概念は引き継がれている

これからUnityで開発を進めていく上で、ぜひこの備忘録を活用してください。



おわりに

Unity開発におけるキーボード操作の基礎である「KeyCode」。
複雑なことはせずとも、しっかりと動作するゲームを作るための基盤です。

「最近使ってなかったから忘れてしまった…」
「キー操作をカスタマイズできるようにしたい」

という方はぜひこの記事をブックマークして、開発中にご活用ください!


📝この記事が役に立ったと思ったら、ぜひシェアお願いします!
Unity開発に関するその他の記事も随時更新予定です!

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です