手柄与键盘鼠的统一适配

核心思路:一个动作,多行映射

同一个 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 自动生成,配合设备图标表。