Unity キー入力の基本とInputクラスの使い方

Unity キー入力 の基本と実装方法

Unityのキー入力システム
🎮
多様な入力デバイス対応

キーボード、ゲームパッド、タッチスクリーンなど様々な入力に対応

🔧
柔軟なカスタマイズ

Input Managerを使用して入力設定をカスタマイズ可能

📱
クロスプラットフォーム対応

PC、モバイル、コンソールなど様々なプラットフォームで一貫した入力処理

 

Unity キー入力の基礎知識とInputクラスの概要

Unityでのキー入力処理は、ゲーム開発において非常に重要な要素です。プレイヤーの操作を正確に検出し、それに応じてゲーム内のアクションを実行するために、Unityは強力なInputクラスを提供しています。

 

Inputクラスは、キーボード、マウス、ジョイスティック、タッチスクリーンなど、様々な入力デバイスからの入力を処理するための統一されたインターフェースを提供します。このクラスを使用することで、開発者は異なるプラットフォーム間で一貫した入力処理を実装できます。

 

Inputクラスの主な特徴:

 

• デバイス非依存:異なる入力デバイスに対して同じコードを使用可能
• リアルタイム検出:フレームごとの入力状態を取得
• 軸入力サポート:アナログスティックなどの連続的な入力を処理
• マルチタッチ対応:複数の同時タッチを検出可能

 

Inputクラスの詳細な使用方法については、Unity公式ドキュメントを参照することをお勧めします。

 

Unity公式ドキュメント - Inputクラスの詳細な説明と使用例

 

Unity キーボード入力の検出とGetKey関数の使い方

キーボード入力の検出は、Unityゲーム開発において最も基本的な入力処理の一つです。InputクラスのGetKeyGetKeyDownGetKeyUp関数を使用することで、キーの押下状態を簡単に検出できます。

 

GetKey: キーが押されている間、毎フレームtrueを返す
GetKeyDown: キーが押された瞬間のみtrueを返す
GetKeyUp: キーが離された瞬間のみtrueを返す

 

これらの関数の使用例:

void Update()

{
if (Input.GetKey(KeyCode.Space))
{
Debug.Log("スペースキーが押されています")
}

 

if (Input.GetKeyDown(KeyCode.Return))
{
Debug.Log("エンターキーが押されました")
}

 

if (Input.GetKeyUp(KeyCode.Escape))
{
Debug.Log("エスケープキーが離されました")
}
}

 

これらの関数はUpdateメソッド内で使用するのが一般的ですが、FixedUpdateLateUpdate内でも使用可能です。ただし、FixedUpdateでは物理演算に関連する入力処理を、LateUpdateではカメラの動きなど、他の更新が完了した後の処理を行うことが推奨されます。

 

キー入力の検出に関する詳細な情報は、以下のリンクで確認できます。

 

Unity公式ドキュメント - GetKey関数の詳細な説明と使用例

 

Unity ゲームパッド入力の実装とKeyCodeの活用法

ゲームパッド入力の実装は、キーボード入力と同様にInputクラスを使用しますが、KeyCodeの代わりに特定のボタン名を使用します。Unityは様々なゲームパッドに対応しており、標準的なボタン配置を想定しています。

 

ゲームパッドボタンの検出例:

void Update()

{
if (Input.GetButton("Fire1"))
{
Debug.Log("ゲームパッドの攻撃ボタンが押されました")
}

 

float horizontal = Input.GetAxis("Horizontal")
float vertical = Input.GetAxis("Vertical")

 

if (horizontal != 0 || vertical != 0)
{
Debug.Log($"スティック入力: X={horizontal}, Y={vertical}")
}
}

 

ここで注目すべき点は、GetAxis関数の使用です。この関数は-1から1の範囲の浮動小数点値を返し、アナログスティックの入力を滑らかに検出できます。

 

また、Unity 2019.1以降では新しい入力システム(Input System)が導入され、より柔軟で拡張性の高い入力処理が可能になりました。新しい入力システムの使用方法については、以下のリンクで詳細を確認できます。

 

Unity公式ドキュメント - 新しい入力システムの概要と使用方法

 

Unity キー入力のカスタマイズとInput Managerの設定

Unityのキー入力をカスタマイズするには、Input Managerを使用します。Input Managerでは、キーボード、マウス、ゲームパッドなどの入力をプロジェクト固有の「軸」や「ボタン」にマッピングできます。

 

Input Managerの設定手順:

  1. Unityエディタで「Edit」→「Project Settings」→「Input Manager」を開く
  2. 「Axes」セクションで新しい入力軸を追加または既存の軸を編集
  3. 各軸に対して、名前、説明、キーコード、感度などを設定

 

カスタム入力の使用例:

void Update()

{
if (Input.GetButtonDown("CustomJump"))
{
Debug.Log("カスタムジャンプボタンが押されました")
}

 

float customHorizontal = Input.GetAxis("CustomHorizontal")
if (customHorizontal != 0)
{
Debug.Log($"カスタム水平入力: {customHorizontal}")
}
}

 

Input Managerを効果的に使用することで、プラットフォーム間の入力の違いを抽象化し、コードの再利用性を高めることができます。

 

Input Managerの詳細な設定方法と高度な使用例については、以下のリンクを参照してください。

 

Unity公式ドキュメント - Input Managerの詳細な設定ガイド

 

Unity モバイルデバイスでのタッチ入力の実装方法

モバイルデバイスでのタッチ入力は、UnityのInput.touchesプロパティを使用して実装します。このプロパティは、現在のフレームで検出されたすべてのタッチ入力の配列を提供します。

 

タッチ入力の基本的な実装例:

void Update()

{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0)

 

switch (touch.phase)
{
case TouchPhase.Began
Debug.Log("タッチ開始")
break
case TouchPhase.Moved
Debug.Log("タッチ移動中")
break
case TouchPhase.Ended
Debug.Log("タッチ終了")
break
}
}
}

 

この例では、最初のタッチ入力(Input.GetTouch(0))のみを処理していますが、複数のタッチを同時に処理することも可能です。

 

さらに、Unity 2018.3以降では、Input Systemパッケージを使用することで、より統一的かつ柔軟なタッチ入力処理が可能になりました。新しいInput Systemを使用したタッチ入力の実装方法については、以下のリンクで詳細を確認できます。

 

Unity公式ドキュメント - Input Systemを使用したタッチ入力の実装ガイド

 

Unityのキー入力システムは非常に強力で柔軟性が高く、様々なプラットフォームやデバイスに対応できます。基本的な使い方を押さえつつ、プロジェクトの要件に応じて適切な入力処理方法を選択することが重要です。また、新しい入力システムの導入により、より統一的で拡張性の高い入力処理が可能になっているため、最新の開発トレンドにも注目しておくことをお勧めします。

Unityでキー入力を実装する方法を解説します。Inputクラスの基本から、キーボードやゲームパッドの入力検出、カスタマイズまでを網羅的に紹介します。あなたのゲーム開発スキルを向上させる準備はできていますか?