Godot4とGDScriptでプレイヤーのデバイス入力情報の取得についてまとめました。
Godot 4.1.1
InputEventについて
Godotの入力システムはUnityの
エンジン側から渡されたイベント情報を参照して、目的のキーが押されたかなどのステートの条件分岐で処理を実行します。
3.xでは、プレイヤーの移動や攻撃など、ゲームプレイに関する
4.xはどうなんですかね。
InputMapについて
上記の管理方法とは別に
入力の管理に
アクションをまとめた一覧みたいなものを
上の画像がそうです。
デフォルトで設定されているアクションを表示するには右上の組み込みアクションを表示のトグルをオンにします。
InputMapにアクションの登録
InputMapにアクションを登録するには、入力欄にアクション名を入力してから「追加」ボタンを押します。
キーバインド
作成したアクションにキーやボタンのバインドをおこなうにはアクションの右にある「+」マークを押して出てきたウィンドウで入力イベントを登録します。
今回はアクション名は「fire」、バインドは「マウス左クリック」と「パッドのEastボタン」を登録したので、左クリックとパッドのボタンを「fire」アクションとして検知できるようになりました。
入力検知の実装
書き方はあまり気にするところはありません。
is_action_pressed()で入力しているかを、is_action_just_pressed()で押した瞬間を検知できます。
離した時は離した時であります。
スクリプトの作成やアタッチなどは他の記事を読んでいただくとして、スクリプトに以下のコードをペシペシ書きます。
実行結果
実行結果は以下の通りです。
押した瞬間は「just pressed」
押している間は「is pressing」
がそれぞれ出力されているのが分かります。