[AGMakerに潜入] AGMakerが入力アクションマップを処理する方法の紹介

導入

ランタイム時にすべてのアクションマップを印刷すると、AGM がマルチプレイヤーコントローラーをサポートするために、プロジェクト設定内の各ユーザー作成のアクションマップに対して、接尾辞 _agm_<controller_id> を持つ複数のプロキシアクションマップを作成することがわかります。VS スクリプトで移動をリッスンし、入力を変数として使用するすべての GameObject ノードは、この特別な接尾辞を持つバージョンです。

重要なポイント

  1. GameObject の下に Node タイプのノードを作成し、このスクリプトをアタッチしてください。
  2. ランタイム時にこの入力を押すと、両方の印刷がトリガーされることを確認できます。
  3. Input.parse_input_eventTouchScreenButton のようなノードを使用して手動で入力をエミットする場合は、_agm_<controller_id> 接尾辞を自分で含めるかどうかを決定する必要があります。
  4. GameObject の移動関数と VS の入力関連関数は、agm 特別な接尾辞を持つ入力アクションのみを考慮します。
  5. 例:元のアクションマップ名が Left の場合、最初のローカルプレイヤーが関与するアクションマップ名は Left_agm_0 となります。ここで 0 はこのプレイヤーの controller_id を表します。
  6. GameObject の controller_id は、対応する VariableSettings ノード内の controller_id という名前の変数の値です。

コア

extends Node

func _input(event: InputEvent) -> void:
    var action_name = "my_action_name"
    # Godot
    if event.is_action_pressed(action_name):
        print(action_name + " pressed!")
    # Game Object Interested
    var controller_id = 0
    var agm_listen = action_name + "_agm_" + str(controller_id)
    if event.is_action_pressed(agm_listen):
        print(agm_listen + " pressed!")
「いいね!」 1