BazInputCondition
适用于 GameObjects 的模拟信号感知输入条件。读取摇杆、扳机键和死区,并支持跨状态的输入缓冲,让跳跃缓冲(jump-buffering)自动生效。三种模式,一个文件,无需 autoload,无需插件,无需修改项目设置。
为了支持我的工作,请考虑 成为赞助者。 ![]()
下载:
v1.2:
BazInputCondition.gd (32.1 KB)
此更新将破坏之前所有 BazInputCondition 资源。这是由 AGM 输入机制的性质所决定的必要设计变更。如果您发现旧版本在本地多人游戏设置中表现不佳,则必须使用此版本。
- 现在只有两种模式:Single(单一)和 Movement(移动)。 已移除 Stick / Vector(摇杆/向量)模式。每个方向读取独立的按键,因此摇杆、键盘和方向键的行为保持一致。文件更小,检查器界面更简洁。
- Movement 模式下的自定义按键。 新的 Source(来源)字段(MoveAndJumpSetting Keys / Custom Keys)允许您选择自己的四个按键。留空某个方向即可跳过该方向。
- Deadzone(死区)启用切换。 默认关闭,以便按钮和按键保持 0/1 状态。当摇杆或扳机键驱动输入时,请将其打开,此时 Deadzone 滑块将作为阈值。
- 两种模式下均包含全部四种时序。 Pressed(按下/保持)、Just Pressed(刚按下)、Released(释放/松开)、Just Released(刚释放)在所有地方均有效,因此“全部四个方向释放”以检测静止状态现在可以正常工作。以前摇杆仅检测保持状态。
- Any Key(任意按键)/ All Keys(所有按键)。 将选中的方向与 Triggered When(触发条件)结合使用。Any Key 在任意一个方向触发时即生效,All Keys 需要所有方向同时保持,例如 Up + Right 实现对角线移动。这取代了旧的 8 方向死区。
v1.1:
BazInputCondition.gd (37.1 KB)
- Movement 和 Stick 模式现在可检测模拟摇杆。 这些模式在运行时读取每个对象针对每个玩家的独立输入集,因此即使移动按键未直接绑定到摇杆轴,左摇杆也能正常注册。(以前在 Movement / Stick 模式下,摇杆可能被读取为空值。)
- 支持多人游戏。 Single、Movement 和 Stick 模式均解析为 控制玩家 自己的输入(基于对象的
player_id),因此每个玩家仅响应自己的控制器——自动完成,无需设置。支持玩家 1–4。 - Movement 模式现在使用圆形(径向)死区。 对角线推动与直线推动的效果相同:将 Deadzone 设置为 0.9,全对角线推动仍会触发。方向选择采用 8 方向带状区域(对角线会同时点亮相邻的两个方向)。键盘和方向键的行为与之前完全一致。
- “Released / at rest”(释放/静止)检查不再将全对角线误判为“已释放”。
v1.0:
BazInputCondition.gd (29.6 KB)
要求
AGMaker 1.3.0+
安装
- 下载
BazInputCondition.gd(见下方附件)。 - 将其放置在项目的
custom_conditions/文件夹中。如果该文件夹不存在,请在项目根目录下创建它。子文件夹如custom_conditions/input/也可以。 - 完成。它将在 Add Condition(添加条件)对话框的 Input / 入力 组中显示。无需启用任何设置。
功能说明
用完整的模拟信号支持替换 AGMaker 内置的 Input 条件。
- 三种模式: Single Input(单一输入,一个按键)、Movement(移动,来自对象的 Move & Jump Settings 的方向)、Stick / Vector(摇杆/向量,整体模拟摇杆)。
- 四种时序: Pressed(按下/保持)、Just Pressed(刚按下)、Released(释放/松开)和 Just Released(刚释放)。
- 一个死区: 针对模拟摇杆和扳机键的单一阈值。普通按钮读取值为 0/1,因此死区不会影响它们。
- Movement 选项: Any Direction(任意方向),或 Specific Directions(特定方向:上/下/左/右)结合 Any of these(任一)或 All of these(全部同时保持)。它遵循每个对象的 Move & Jump Settings 中设置的按键。
- Stick / Vector 选项: Pushed(推向超过死区的任意方向)或 Aiming Toward Angle(瞄准特定角度,指向容差范围内的目标角度)。
- Accept Frame Count(接受帧数): 一个跨状态的输入缓冲窗口,让跳跃缓冲自动生效。
使用方法
将条件添加到过渡(transition)中,然后设置 Input Mode(输入模式)。字段将随之更新:
- Single Input → Input Key(A, B, arrow_up, …)→ Deadzone → Input Method
- Movement → Movement Check(Any Direction / Specific Directions)→ Deadzone → Input Method
- Stick / Vector → Stick Check(Pushed / Aiming Toward Angle)→ Deadzone → Input Method
各字段的功能:
- Input Method(输入方法)是时序类型:Pressed(保持)、Just Pressed(按下瞬间)、Released(松开)或 Just Released(松开瞬间)。
- Deadzone(死区)是摇杆或扳机键需要推动多远才算有效(0 到 1)。普通按钮会忽略此设置。
- Accept Frame Count(接受帧数,仅在 Just 时序中显示)会将按下状态记忆 N 帧,以便过渡可以接受稍晚的输入,例如在落地前瞬间按下跳跃。它可以在状态更改之间工作。
提示
- Deadzone 仅影响模拟输入。 按钮读取值为 0/1,因此对它们无效。
- 释放输入(Released / Just Released)配合较小的死区效果最佳。 “释放”检查在摇杆值 低于 死区时即为真,因此较大的死区会在您仍在推动时报告“已释放”。当将 Pressed(开始)与 Released(停止)配对时,请将 Released 的死区设置得 小于 Pressed 的死区——两个阈值之间的间隙充当缓冲,防止摇杆在阈值线附近静止时输入闪烁。
- Movement 方向来自每个对象的 Move & Jump Settings。 没有设置的对象将回退到方向键。
- Stick / Vector 目前支持保持时序。 即本版本中的 Pressed 和 Released。



