【Godot】InputMapによるキーバインド管理

作成: 2025-06-20最終更新: 2025-12-06

キーボードやゲームパッドの入力を抽象化して管理する仕組み。複数キー割り当てやキーコンフィグに対応

概要

ゲームをプレイするとき、多くのプレイヤーは自分の好みに合わせてキーボードやゲームパッドのボタン配置(キーバインド)を変更したいと考えるものです。Godotでは、このキーバインドを非常に簡単かつ効率的に管理するための「InputMap」という強力な機能が提供されています。

この記事では、InputMapの基本的な使い方と、それがいかにゲーム開発を快適にするかについて解説します。

InputMapとは?

InputMapは、特定のアクション(例:「ジャンプ」「攻撃」「右へ移動」)に対して、どの物理的なキーやボタンを割り当てるかを一元管理するシステムです。これにより、コード内で「Wキーが押されたら」と直接書くのではなく、「move_forwardアクションが実行されたら」という抽象的な形で入力を扱えるようになります。

InputMapを使うメリット:

  • 柔軟性: プレイヤーはゲーム内で自由にキーを再設定できます。
  • 保守性: コードを変更することなく、キーの割り当てを変更できます。
  • 多デバイス対応: キーボード、マウス、ゲームパッドなど、複数の入力デバイスを同じアクションに簡単に割り当てられます。

InputMapの設定方法

InputMapの設定は、Godotエディタの「プロジェクト」メニューから行います。

  1. プロジェクト設定を開く: メニューバーから「プロジェクト」→「プロジェクト設定」を選択します。
  2. InputMapタブに移動: 上部のタブから「InputMap」を選択します。
Input Map設定画面
  1. アクションの追加: 一番上の「アクション」入力欄に、新しいアクション名(例: attack)を入力し、「追加」ボタンを押します。

  2. イベントの割り当て: 追加されたアクションの右側にある「+」アイコンをクリックし、「キー」や「マウスボタン」などを選択します。ダイアログが表示されたら、割り当てたい物理キーを押すだけで登録が完了します。

例えば、「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など)を定義することから始めてみましょう。この一手間が、後の開発効率を大きく向上させてくれるはずです。