概要
ゲームをプレイするとき、多くのプレイヤーは自分の好みに合わせてキーボードやゲームパッドのボタン配置(キーバインド)を変更したいと考えるものです。Godotでは、このキーバインドを非常に簡単かつ効率的に管理するための「InputMap」という強力な機能が提供されています。
この記事では、InputMapの基本的な使い方と、それがいかにゲーム開発を快適にするかについて解説します。
InputMapとは?
InputMapは、特定のアクション(例:「ジャンプ」「攻撃」「右へ移動」)に対して、どの物理的なキーやボタンを割り当てるかを一元管理するシステムです。これにより、コード内で「Wキーが押されたら」と直接書くのではなく、「move_forwardアクションが実行されたら」という抽象的な形で入力を扱えるようになります。
InputMapを使 うメリット:
- 柔軟性: プレイヤーはゲーム内で自由にキーを再設定できます。
- 保守性: コードを変更することなく、キーの割り当てを変更できます。
- 多デバイス対応: キーボード、マウス、ゲームパッドなど、複数の入力デバイスを同じアクションに簡単に割り当てられます。
InputMapの設定方法
InputMapの設定は、Godotエディタの「プロジェクト」メニューから行います。
- プロジェクト設定を開く: メニューバーから「プロジェクト」→「プロジェクト設定」を選択します。
- InputMapタブに移動: 上部のタブから「InputMap」を選択します。

-
アクションの追加: 一番上の「アクション」入力欄に、新しいアクション名(例:
attack)を入力し、「追加」ボタンを押します。 -
イベントの割り当て: 追加されたアクションの右側にある「+」アイコンをクリックし、「キー」や「マウスボタン」などを選択します。ダイアログが表示されたら、割り当てたい物理キーを押すだけで登録が完了します。
例えば、「attack」アクションにマウスの左クリックとスペースキーの両方を割り当てることも可能です。
スクリプトからの利用
InputMapで設定したアクションは、Inputシングルトンを通じて簡単に呼び出せます。前の記事で解説したis_action_pressed()などのメソッドがそのまま使えます。
func _process(delta):
# "attack"アクションが押された瞬間に攻撃処理を呼び出す
if Input.is_action_just_pressed("attack"):
execute_attack()
# "move_right"と"move_left"から移動方向を取得
var direction = Input.get_axis("move_left", "move_right")
velocity.x = direction * SPEED
コード内では具体的なキー(KEY_SPACEなど)に一切触れていない点に注目してください。これにより、もし後から攻撃キーをエンターキーに変更したくなっても、スクリプトを一行も変更する必要がなく、InputMapの設定を変えるだけで済みます。
まとめ
InputMapは、Godotで入力処理を扱う上で絶対に欠かせない基本機能です。ハードコーディング(スクリプト内に直接キーを書き込むこと)を避け、アクションという抽象的なレイヤーを挟むことで、あなたのゲームは格段に柔軟で、ユーザーフレンドリーになります。
ゲーム開発を始めたら、まずはInputMapで基本的なアクション(move_left, move_right, jump, attackなど)を定義することから始めてみましょう。この一手間が、後の開発効率を大きく向上させてくれるはずです。