虚拟垫说明

virtualpad_agm.zip|附件 (9.6 KB)

VirtualJoystick 会根据触摸或鼠标位置计算“轴向量”、“角度”和“距离”,并根据设置向 InputMap 发送动作。

其主要特性如下:

  1. 保持当前输入向量

    • 使用 get_axis() 可获取当前轴向量(右为正 X,上为负 Y)
    • 使用 get_input_strength() 可获取向量长度(0.0~1.0)
    • 使用 get_input_angle_deg() 可获取角度(以度为单位,0 度为右,90 度为上)
  2. 根据角度和距离范围决定动作

    • 在 VirtualJoystickAngleConfig 中设置“负责哪个角度范围”
    • 在其中的 VirtualJoystickDistanceBand 中设置“距离范围和动作名称”
    • 当输入的角度和距离落入某个范围时,该范围对应的动作将被发送到 InputMap
  3. 自动添加 AGM 后缀

  4. 可通过信号发送任意通知
    向 AGM 游戏对象发送信号时,请将 generic_signal(signal_name: String, value: Variant) 连接到目标对象的 receive_signal。


2. 最小配置下的使用方法

以下是在最小设置下将其作为四方向单段虚拟摇杆使用的步骤。

2-1. 在场景中添加 VirtualJoystick 节点

  1. 在场景树中直接添加 VirtualJoystick

    添加 Node2D,并为其脚本附加 virtual_joystick.gd

2-2. 点击子节点自动生成按钮

选中 VirtualJoystick 节点后,检查器中会出现“生成并分配默认子节点”按钮。
(若按钮未显示或点击后未正常生成,请保存项目并重新启动)

  1. 点击此按钮一次

  2. 以下节点将自动生成:

    • area_control_node
      用于覆盖整个屏幕等区域的 Control,作为触摸的有效范围。
      若此节点为空,则整个屏幕将成为虚拟摇杆的触摸范围。
      若虚拟摇杆无反应,请检查此设置。

    • base_texture_rect_node
      用于基础图像的 TextureRect

    • knob_texture_rect_node
      用于摇杆图像的 TextureRect

    如有需要,可将自定义的 TextureRect 分配给 overlay_texture_rect_node。

2-3. 在 InputMap 中注册动作

  1. 在 InputMap 中注册虚拟摇杆将使用的按键。

2-4. 自动生成功能角度动作

  1. 将 VirtualJoystick 的 use_angle_actions 设置为 true
  2. 点击检查器中的“自动生成四方向角度动作”按钮
  3. angle_actions 中将添加四个 VirtualJoystickAngleConfig:
    • Right
      角度范围:-45 至 45 度
    • Up
      角度范围:45 至 135 度
    • Left
      角度范围:135 至 -135 度(包含 360 度环绕)
    • Down
      角度范围:-135 至 -45 度

每个 angle_config 内部仅包含一个 bands,初始状态下为“任何角度下距离范围均为 0~1”。

2-5. 在距离带中填写动作名称

  1. 打开 Right 的 VirtualJoystickAngleConfig
  2. 选择其中的 bands[0](VirtualJoystickDistanceBand)
  3. action_name 中填入希望触发的 InputMap 键名

2-6. 调整 dead_zone 和 max_distance

  1. dead_zone

    • 当轴向量长度小于此值时,视为零轴
    • 若希望轻微移动时不触发反应,可设为 0.15~0.2 左右,便于操作
  2. max_distance

    • 以像素为单位指定摇杆可移动的最大距离
    • 请根据基础图像的半径进行调整

2-7. 运行并确认

  1. 在播放模式下,触摸或拖动 area_control_node 的范围
  2. 基础图像和摇杆将随之移动,根据输入角度和距离激活对应的距离带设置