【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
の代わりにKey
やInputAction
を使うことが推奨されています。
ただし、従来の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開発に関するその他の記事も随時更新予定です!