【AI笔记】UE5 增强输入系统笔记

一、 系统概述

增强输入系统是 UE5 的默认输入框架。其核心设计理念是“物理输入与游戏逻辑彻底解耦”。 通过模块化的数据资产,系统支持在运行时动态切换操作模式(上下文),并原生提供了处理复杂连招、蓄力、组合键的时间与状态判定机制。

二、 四大核心组件

1. 输入操作 (Input Action, IA)

  • 定位:定义“动作类型”(What),是连接物理按键与蓝图/C++代码逻辑的锚点。
  • 核心属性
    • 值类型 (Value Type):决定传递的数据格式。
      • Digital (bool):状态开关(如:攻击、闪避、互动)。
      • Axis1D (float):标量数值(如:扳机键深度、摄像机缩放)。
      • Axis2D (Vector2D):二维向量(如:角色移动、平面视角控制)。
      • Axis3D (Vector3D):三维向量(如:VR设备使用)。
    • 消耗较低优先级增强输入映射 (Consume Input):布尔值开关。开启后,该 IA 触发时将独占硬件信号,阻止信号向低优先级层级传递。

2. 输入映射上下文 (Input Mapping Context, IMC)

  • 定位:定义“硬件映射规则”(How),是物理按键与 IA 之间的关联清单。
  • 核心机制
    • 动态挂载/卸载:游戏运行时,可通过 Player Controller 提取本地玩家子系统,调用 Add/Remove Mapping Context 动态切换按键方案。
    • 优先级 (Priority):当多个 IMC 同时激活且存在按键冲突时,高优先级的 IMC 将优先截获并处理输入信号。

3. 修饰符 (Modifiers)

  • 定位:信号预处理“调音台”。在信号传递给 IA 前,对其进行数学计算。
  • 常用类型
    • 盲区 (Dead Zone):过滤控制器摇杆的物理漂移微小信号,设定上下限阈值。
    • 否定 (Negate):翻转轴向数值(如:配置 S 键后退,将 Y 轴 1 翻转为 -1)。
    • 拌合输入轴值 (Swizzle):转移轴向通道(如:配置 W 键前进,将默认的 X 轴输入转移到 Y 轴)。
    • 平滑 (Smooth):为纯数字输入(如键盘按键)模拟线性控制器的过渡曲线。

4. 触发器 (Triggers)

  • 定位:动作判定“裁判”。基于时间、按键状态等条件,裁定 IA 是否被成功激活。
  • 判定状态 (Trigger States):执行逻辑的基础节点引脚。
    • Started:条件开始评估的起始帧(常用于播放前摇特效)。
    • Ongoing:条件评估期间(如:蓄力进度推进)。
    • Triggered:条件达成,正式激活(触发核心伤害逻辑)。
    • Canceled:条件中途被破坏(如:蓄力未满提前松手,引发僵直或打断)。
    • Completed:动作执行完毕后松开按键的瞬间。
触发器类型 Started (已开始) Ongoing (进行中) Triggered (已触发) Canceled (已取消) Completed (已完成)
已按下 (Pressed) 按下瞬间 按下阈值达到瞬间 (与 Started 同帧靠后) 按下阈值达到瞬间 (与 Triggered 同帧靠后)
已松开 (Released) 按下瞬间 按住持续期间 松开阈值达到瞬间 松开阈值达到瞬间 (与 Triggered 同帧靠后)
点按 (Tap) 按下瞬间 按住未到达时间阈值的期间 限时内松开的瞬间 超时未松手 限时内松开的瞬间(与 Triggered 同帧靠后)
下移 (Down) 按下瞬间 按住期间的每一帧持续触发 松开瞬间
长按 (Hold) 按下瞬间 未达到时间阈值期间 达到时间阈值后一次或每帧(可配置) 未达时间阈值提前松手 达标后最终松开瞬间
长按和松开 按下瞬间 读条及达标后的按住期间 达到时间阈值后松开的瞬间 未达时间阈值提前松手 达到时间阈值后松开的瞬间 (与 Triggered 同帧靠后)
脉冲 (Pulse) 按下瞬间 两次脉冲间隔的冷却期 达到间隔时间时瞬间触发 松开 达到连发上限
重复点击 (Combo) 按下瞬间 每次按住未到达点按时间阈值的期间 成功完成指定点击次数的瞬间 单次点击超时未松开时;点冲成功松开但未达到指定次数 成功完成指定点击次数的瞬间(与 Triggered 同帧靠后)