Trigger 的时机语义
Trigger 决定"按键之后什么时候算真的触发"。
内置触发器全表
| Trigger | 何时返回 Triggered | 备注 |
|---|---|---|
| Pressed | 按下瞬间 | 一次性 |
| Released | 松开瞬间 | 一次性 |
| Down | 按住期间(每帧) | 类似旧轴 |
| Hold | 按住超过设定时长 | 可配时长,有 Progress |
| Pulse | 按住周期性触发 | 可配周期 |
| Double Tap | 两次按下间隔 < 阈值 | 可配阈值 |
| Tap | 快速点按(按下-松开 < 时长) | 区分长按 |
| Chord | 指定的多个键同时按 | 组合键 |
| Combo(自定义常见) | 序列按键 | 引擎无内置,需自定义或插件 |
Hold 的进阶用法
- Hold Time:0.5s(可配);
- Progress 输出:0~1,UI 进度条直接绑;
- Immediate Trigger 配合:可以配成"按下先走(短按攻击)、按住超过 0.5s 变蓄力"。
双语义按键的两种做法
需求:"单击右键瞄准,双击右键翻滚"。
做法 A(两行映射):
IA_Aim ← RightMouseButton, Trigger: Pressed + Released
IA_Dodge ← RightMouseButton, Trigger: Double Tap(0.3s)
注意:双击时单击也会触发一次——需要配合"Tap" 触发器 + 延迟判定,工程上常用做法 B。
做法 B(一个动作 + 逻辑判断):IA_Aim 用 Tap Trigger(快速点按才触发,按住不触发),翻滚用 Double Tap。两者配合可以做到"双击只翻滚不瞄准",因为 Double Tap 的第二次按下落在 Tap 的"等待"窗口里。
这类微妙的手感逻辑是 Trigger 系统最大的价值:在引擎层而非蓝图层处理时序。
本章小结
- Trigger 全表:Pressed/Released/Down/Hold/Pulse/DoubleTap/Tap/Chord。
- Hold 的 Progress 可直接驱动蓄力 UI;Tap + DoubleTap 组合实现"单击/双击"分流。
- 时序逻辑放引擎层处理,是 Trigger 体系的核心价值。
