Unityでのキー入力処理は、ゲーム開発において非常に重要な要素です。プレイヤーの操作を正確に検出し、それに応じてゲーム内のアクションを実行するために、Unityは強力なInputクラスを提供しています。
Inputクラスは、キーボード、マウス、ジョイスティック、タッチスクリーンなど、様々な入力デバイスからの入力を処理するための統一されたインターフェースを提供します。このクラスを使用することで、開発者は異なるプラットフォーム間で一貫した入力処理を実装できます。
Inputクラスの主な特徴:
• デバイス非依存:異なる入力デバイスに対して同じコードを使用可能
• リアルタイム検出:フレームごとの入力状態を取得
• 軸入力サポート:アナログスティックなどの連続的な入力を処理
• マルチタッチ対応:複数の同時タッチを検出可能
Inputクラスの詳細な使用方法については、Unity公式ドキュメントを参照することをお勧めします。
Unity公式ドキュメント - Inputクラスの詳細な説明と使用例
キーボード入力の検出は、Unityゲーム開発において最も基本的な入力処理の一つです。InputクラスのGetKey
、GetKeyDown
、GetKeyUp
関数を使用することで、キーの押下状態を簡単に検出できます。
• 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
メソッド内で使用するのが一般的ですが、FixedUpdate
やLateUpdate
内でも使用可能です。ただし、FixedUpdate
では物理演算に関連する入力処理を、LateUpdate
ではカメラの動きなど、他の更新が完了した後の処理を行うことが推奨されます。
キー入力の検出に関する詳細な情報は、以下のリンクで確認できます。
Unity公式ドキュメント - GetKey関数の詳細な説明と使用例
ゲームパッド入力の実装は、キーボード入力と同様に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を使用します。Input Managerでは、キーボード、マウス、ゲームパッドなどの入力をプロジェクト固有の「軸」や「ボタン」にマッピングできます。
Input Managerの設定手順:
カスタム入力の使用例:
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の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ゲーム開発入門
↑
実は、こちらの本はamazonのkindleアンリミテッドでタダで読めます。
でもそれ以外の分厚いUnity本は、アンリミテッドの対象外。良いのはわかるけど、高い!
そこで、2,550円引きでほしいUnity本をゲットする方法です。
この方法だと、完全に0円でゲットできます。
定価2,520円の本に2,550円割引が効く=0円です。
やり方
↓
DMMブックスのクーポンと特典を併用します。
実は、DMMブックスは利用者を増やすために初回90%オフ(最大2,000円引き)のクーポンを配ってます。初回利用なら、誰でも使えます。
さらに、DMMプレミアムという動画サブスクを無料お試しすると、こちらも特典として550ポイント(550円相当)もらえるんですね。
クーポンと特典合わせて2,550円引きでUnity本が買えるというわけ。
詳しくはこちらの記事にまとめました。