手柄与键盘鼠的统一适配
核心思路:一个动作,多行映射
同一个 IA 在 IMC 里有多行映射,每行对应一个设备:
IA_Jump
├─ Space Bar (键盘)
├─ Gamepad Face Button Bottom (Xbox A / PS X)
└─ VR (Grip) (如有)
逻辑代码只认 IA_Jump,设备差异在 IMC 里消解。
摇杆的特殊修饰
手柄摇杆通常需要: - Dead Zone(零漂消除); - Curve(响应曲线); - Scalar(灵敏度)。
这三个都只放在手柄那行映射上(不放 IA 全局),键盘行不受影响。
设备检测与"振动"
振动反馈是手柄专属:
// 蓝图:Get Player Controller → Play Force Feedback(Effect 资产,手柄才生效)
// C++:PC->ClientPlayForceFeedback(...)
发振动的时机建议:受击、落地、重击命中等"有身体感"的事件。
触屏(移动端)
UE 的触屏输入也走 Input 系统(Touch 键可以作为映射 Key)。Enhanced Input 里"虚拟摇杆" 通常用 Common UI / 虚拟操纵杆插件(或自绘 Widget)产生轴值,再映射给 IA_Move——逻辑层同样是 IA,这就是跨平台的统一性。
移动端的完整开发细节见本系列《UE5 移动端开发与打包发布实战》。
一份适配清单
| 设备特性 | 在哪处理 |
|---|---|
| 按键名差异(A/交叉键/Ctrl) | IMC 多行映射 |
| 摇杆死区/曲线 | 手柄行的修饰器 |
| 振动 | PlayerController 的 Force Feedback |
| 触屏虚拟摇杆 | Widget 产生轴值映射 |
| 按键提示图标 | QueryKeysMappedToAction + 设备图标表 |
本章小结
- 设备适配 = 同一 IA 多行映射 + 手柄行专属修饰。
- 振动走 PlayerController 的 Force Feedback;触屏虚拟摇杆产生的轴值同样喂 IA。
- 按键提示可由 QueryKeysMappedToAction 自动生成,配合设备图标表。
