IMC:按键 → 动作的映射表
一个 IMC 的长相
IMC_Default
├─ Mappings
│ ├─ [IA_Jump] → Keys: Space Bar, Gamepad Face Button Bottom
│ ├─ [IA_Move] → Keys: W (Modifier: Swizzle 1D→2D Y 轴), S(取反), A, D ...
│ ├─ [IA_Look] → Keys: Mouse XY (2D), Gamepad Right Thumbstick
│ └─ [IA_Fire] → Keys: Left Mouse Button
└─ 优先级:添加 IMC 时传入
映射的三要素
每一行映射 = 键 + 动作 + (该行的 Modifier/Trigger):
| 要素 | 说明 |
|---|---|
| Key | 物理键(键盘/鼠标/手柄/触屏) |
| Action | 目标 IA |
| Modifiers | 本行专属的修饰器(也可在 IA 上设全局) |
| Triggers | 本行专属的触发器 |
同一个 IA 可映射多个键(键盘 + 手柄同时支持),逻辑代码只认 IA——这就是多设备支持的来源。
键盘的"两键合一轴"
键盘没有摇杆,WASD 是四个布尔键。做法:每行映射一个键,用 Swizzle Input Axis 修饰器把它"塞进"2D 向量的某个分量:
W → IA_Move,Modifier: Swizzle(InputAxisY,值 1)
S → IA_Move,Modifier: Swizzle(InputAxisY,值 -1)
A → IA_Move,Modifier: Swizzle(InputAxisX,值 -1)
D → IA_move,Modifier: Swizzle(InputAxisX,值 1)
同时按 W+D → IA_Move = (1,1) —— 斜方向。这是键盘移动的标准做法,引擎模板项目 ThirdPerson 已内置可直接抄。
Modifier 放 IA 还是 IMC?
- IA 上的修饰器对该动作的所有映射生效("全局修饰");
- IMC 映射行上的修饰器只对该键生效("局部修饰")。
原则:死区、曲线这类"设备相关"的放 IMC 行(手柄要死区,键盘不要);缩放这类"逻辑相关"的放 IA(乘移动速度)。
本章小结
- IMC 行 = 键 + 动作 + 行级 Modifier/Trigger;一个 IA 可映射多个键。
- 键盘 WASD 用 Swizzle 修饰器合成 Axis2D。
- 局部修饰(IMC 行)管设备适配,全局修饰(IA)管逻辑缩放。
