virtualpad_agm.zip|附件 (9.6 KB)
VirtualJoystick 会根据触摸或鼠标位置计算“轴向量”、“角度”和“距离”,并根据设置向 InputMap 发送动作。
其主要特性如下:
-
保持当前输入向量
- 使用
get_axis()可获取当前轴向量(右为正 X,上为负 Y) - 使用
get_input_strength()可获取向量长度(0.0~1.0) - 使用
get_input_angle_deg()可获取角度(以度为单位,0 度为右,90 度为上)
- 使用
-
根据角度和距离范围决定动作
- 在 VirtualJoystickAngleConfig 中设置“负责哪个角度范围”
- 在其中的 VirtualJoystickDistanceBand 中设置“距离范围和动作名称”
- 当输入的角度和距离落入某个范围时,该范围对应的动作将被发送到 InputMap
-
自动添加 AGM 后缀
-
可通过信号发送任意通知
向 AGM 游戏对象发送信号时,请将generic_signal(signal_name: String, value: Variant)连接到目标对象的 receive_signal。
2. 最小配置下的使用方法
以下是在最小设置下将其作为四方向单段虚拟摇杆使用的步骤。
2-1. 在场景中添加 VirtualJoystick 节点
- 在场景树中直接添加 VirtualJoystick
或
添加 Node2D,并为其脚本附加virtual_joystick.gd
2-2. 点击子节点自动生成按钮
选中 VirtualJoystick 节点后,检查器中会出现“生成并分配默认子节点”按钮。
(若按钮未显示或点击后未正常生成,请保存项目并重新启动)
-
点击此按钮一次
-
以下节点将自动生成:
-
area_control_node
用于覆盖整个屏幕等区域的 Control,作为触摸的有效范围。
若此节点为空,则整个屏幕将成为虚拟摇杆的触摸范围。
若虚拟摇杆无反应,请检查此设置。 -
base_texture_rect_node
用于基础图像的 TextureRect -
knob_texture_rect_node
用于摇杆图像的 TextureRect
如有需要,可将自定义的 TextureRect 分配给 overlay_texture_rect_node。
-
2-3. 在 InputMap 中注册动作
- 在 InputMap 中注册虚拟摇杆将使用的按键。
2-4. 自动生成功能角度动作
- 将 VirtualJoystick 的
use_angle_actions设置为 true - 点击检查器中的“自动生成四方向角度动作”按钮
- angle_actions 中将添加四个 VirtualJoystickAngleConfig:
- Right
角度范围:-45 至 45 度 - Up
角度范围:45 至 135 度 - Left
角度范围:135 至 -135 度(包含 360 度环绕) - Down
角度范围:-135 至 -45 度
- Right
每个 angle_config 内部仅包含一个 bands,初始状态下为“任何角度下距离范围均为 0~1”。
2-5. 在距离带中填写动作名称
- 打开 Right 的 VirtualJoystickAngleConfig
- 选择其中的
bands[0](VirtualJoystickDistanceBand) - 在
action_name中填入希望触发的 InputMap 键名
2-6. 调整 dead_zone 和 max_distance
-
dead_zone
- 当轴向量长度小于此值时,视为零轴
- 若希望轻微移动时不触发反应,可设为 0.15~0.2 左右,便于操作
-
max_distance
- 以像素为单位指定摇杆可移动的最大距离
- 请根据基础图像的半径进行调整
2-7. 运行并确认
- 在播放模式下,触摸或拖动 area_control_node 的范围
- 基础图像和摇杆将随之移动,根据输入角度和距离激活对应的距离带设置