# 【AGMakerの詳細】AGMakerがInput Action Mapを処理する方法の紹介

**URL:** <https://guild.rpgmakerofficial.com/t/topic/756>\
**Category:** 一般\
**Tags:** 中文教程, 中文\
**Created:** [2025 年 8 月 18 日午後 12:05 UTC](https://guild.rpgmakerofficial.com/t/topic/756 "2025-08-18T12:05:25Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Justus](https://sea2.discourse-cdn.com/flex002/user_avatar/guild.rpgmakerofficial.com/justus/32/55_2.png) [@Justus](https://guild.rpgmakerofficial.com/u/Justus)\
**Post date:** [2025 年 8 月 18 日午後 12:05 UTC](https://guild.rpgmakerofficial.com/t/topic/756/1 "2025-08-18T12:05:25Z")

</div>

## 序論

実行時にすべてのAction Mapを印刷すると、AGMはマルチプレイヤーコントローラーをサポートするために、プロジェクト設定の各ユーザーに対して、`_agm_<controller_id>`で終わる複数の代理Action Mapを作成することがわかります。  
また、すべてのGameObjectノードが監視している移動用およびVSスクリプト内で条件として使用される入力は、この特殊な接尾辞が付いたバージョンです。

## ポイント

1. GameObjectの下にNodeタイプのノードを作成し、このスクリプトをその上にアタッチします。
2. 実行時にこの入力を押すと、2つのprintがどちらもトリガーされるのが確認できます。
3. `Input.parse_input_event`や`TouchScreenButton`などのノードを使用して手動で入力をシミュレートする場合は、`_agm_<controller_id>`接尾辞を付与するかどうかを自分で判断する必要があります。
4. GameObjectの移動機能とVS内の入力に関連する機能は、agmという特殊な接尾辞を持つinput actionのみを認識します。
5. 例：元のAction Mapの名前が`Left`の場合、最初のローカルプレイヤーが関心を持つAction Mapの名前は`Left_agm_0`となります。ここで0は、このプレイヤーの`controller_id`が0であることを示します。
6. 特定のGameObjectの`controller_id`は、そのGameObjectに対応するVariableSettingsノード内にある`controller_id`という名前の変数の値です。

## コア

```python
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!")

```
