在虚幻引擎5中,增强输入系统(Enhanced Input System) 是处理玩家输入的标准方式,它取代了旧版UE4的Action/Axis映射系统。本文将为你提供 InputAction 和 InputAxis 节点的完整使用案例和具体操作步骤。
一、核心概念理解
1.1 什么是 InputAction 和 InputAxis?
在增强输入系统中,InputAction(输入动作) 是增强输入系统和项目代码之间的通信链接。每个输入动作代表用户可以执行的某件事,例如“跳跃”或“射击”。
InputAction 的值类型(Value Type) 决定了它捕获的数据类型:
| 值类型 | 说明 | 适用场景 |
|---|---|---|
| Digital (bool) | 布尔值(开/关) | 跳跃、冲刺、蹲伏等开关型操作 |
| Axis1D (float) | 一维浮点值 | 滚轮滚动、油门控制 |
| Axis2D (Vector2D) | 二维向量(X和Y) | WASD移动、摇杆控制 |
| Axis3D (Vector) | 三维向量(X、Y、Z) | 飞行控制、运动控制器 |
注意:在UE5的增强输入系统中,不再区分“Action”和“Axis” ——统一使用 InputAction,通过设置不同的 Value Type 来区分是开关型还是轴型输入。
1.2 触发状态(Trigger State)
InputAction 节点有五种触发状态:
-
Started(已开始):输入开始
-
Ongoing(进行中):输入持续
-
Triggered(已触发):输入完成触发条件
-
Completed(已完成):输入结束
-
Canceled(已取消):输入被取消
二、完整案例一:跳跃功能(Digital / Bool 类型)
这是一个最基础的 InputAction 使用案例——按空格键让角色跳跃。
步骤1:创建 Input Action 资产
-
在 内容浏览器(Content Browser) 中,导航到你想存放输入资产的文件夹(建议创建
Input/Actions文件夹) -
右键点击 → 输入(Input) → 输入动作(Input Action)
-
将资产命名为
IA_Jump -
双击打开
IA_Jump,在细节(Details)面板中确认 值类型(Value Type) 为 Digital (bool)(默认值)
步骤2:创建 Input Mapping Context(输入映射上下文)
-
在内容浏览器中右键点击 → 输入(Input) → 输入映射上下文(Input Mapping Context)
-
命名为
IMC_Default -
双击打开
IMC_Default -
在映射(Mappings) 区域点击 加号(+) 按钮
-
在 输入动作(Input Action) 下拉菜单中选择
IA_Jump -
点击 添加(Add) 按钮,按下 空格键(Space Bar) 将其绑定到该动作
步骤3:在角色蓝图中使用 InputAction 节点
-
打开你的角色蓝图(如
BP_ThirdPersonCharacter) -
进入事件图表(Event Graph)
-
右键点击空白处,搜索
IA_Jump——你会看到EnhancedInputAction IA_Jump节点 -
拖出该节点,它会显示 Started、Triggered、Completed 等执行引脚
-
将 Started 引脚连接到
Jump节点(角色蓝图自带功能) -
将 Completed 引脚连接到
Stop Jumping节点
提示:在蓝图中使用 InputAction 时,直接搜索 InputAction 资产的名称即可找到对应的
EnhancedInputAction节点。
步骤4:将映射上下文添加到玩家
-
在角色蓝图的事件开始运行(Event BeginPlay) 节点后面
-
拖出
Get Player Controller节点 -
从 Player Controller 拖出
Get Enhanced Input Local Player Subsystem节点 -
调用
Add Mapping Context函数 -
将
IMC_Default赋值给 映射上下文(Mapping Context) 参数 -
优先级(Priority)设置为 0
三、完整案例二:角色移动(Axis2D 类型)
这是一个使用 Axis2D 类型 InputAction 实现 WASD 角色移动的完整案例。
步骤1:创建 Input Action 资产(Axis2D)
-
在内容浏览器中右键点击 → 输入(Input) → 输入动作(Input Action)
-
命名为
IA_Move -
双击打开,在细节面板中将值类型(Value Type) 设置为 Axis2D (Vector2D)
步骤2:在 Mapping Context 中绑定按键
-
打开
IMC_Default(或新建一个) -
点击 加号(+) 添加映射
-
选择
IA_Move作为输入动作 -
添加以下按键绑定:
-
W 键 → 修改器(Modifiers)设置为
Swizzle Input Axis Values,将 Y 轴设为 1.0(向前) -
S 键 → 修改器设置为
Swizzle Input Axis Values,将 Y 轴设为 -1.0(向后) -
A 键 → 修改器设置为
Swizzle Input Axis Values,将 X 轴设为 -1.0(向左) -
D 键 → 修改器设置为
Swizzle Input Axis Values,将 X 轴设为 1.0(向右)
-
简化方法:如果不使用修改器,也可以为每个按键单独创建映射条目,分别设置不同的缩放(Scale) 值。
步骤3:在蓝图中使用 IA_Move 节点
-
打开角色蓝图的事件图表
-
右键搜索
IA_Move,拖出EnhancedInputAction IA_Move节点 -
从 Triggered 引脚拖出连线
-
节点会提供
Action Value X和Action Value Y输出引脚——这对应 WASD 的输入值
步骤4:构建移动逻辑
方法一:使用 Add Movement Input 节点
[Triggered] → [Add Movement Input]
├─ World Direction → Get Actor Forward Vector(Y值控制前后)
└─ Scale Value → Action Value Y
[Triggered] → [Add Movement Input]
├─ World Direction → Get Actor Right Vector(X值控制左右)
└─ Scale Value → Action Value X
方法二:封装为自定义函数(推荐)
参考 UE5 官方模板的做法,创建一个名为 Move 的自定义函数,接收 Forward/Backward 和 Left/Right 两个输入参数:
[Triggered] → [Move Function]
├─ Forward/Backward ← Action Value Y
└─ Left/Right ← Action Value X
在 Move 函数内部:
-
使用
Get Actor Forward Vector+Add Movement Input处理前后移动 -
使用
Get Actor Right Vector+Add Movement Input处理左右移动
步骤5:添加 Mapping Context(同上文跳跃案例的步骤4)
四、完整案例三:冲刺(长按触发)
使用 InputAction 的 触发器(Trigger) 功能实现“长按 Shift 键冲刺”。
步骤1:创建 Input Action
-
创建
IA_Sprint,值类型保持 Digital (bool) -
在细节面板的触发器(Triggers) 区域点击 加号(+)
-
选择
Hold(按住) 触发器 -
设置 触发时间(Trigger Time) 为 0.3秒(按住0.3秒后触发)
步骤2:在 Mapping Context 中绑定
-
将
IA_Sprint添加到IMC_Default -
绑定到 左 Shift 键
步骤3:在蓝图中使用
-
在角色蓝图事件图表中搜索
IA_Sprint -
从 Started 引脚:提高角色的最大移动速度(Max Walk Speed)
-
从 Completed 引脚:恢复角色的最大移动速度
[Started] → [Set Max Walk Speed] → 600(冲刺速度) [Completed] → [Set Max Walk Speed] → 300(正常速度)
五、InputAction 节点使用总结
5.1 核心节点
| 节点名称 | 说明 |
|---|---|
| EnhancedInputAction [资产名] | 在蓝图中监听 InputAction 的核心节点 |
| Action Value | 获取输入值(对于 Axis1D/2D/3D 类型) |
| Started / Triggered / Completed | 不同触发状态的执行引脚 |
5.2 完整工作流程
创建 InputAction 资产
↓
设置 Value Type(Digital / Axis1D / Axis2D / Axis3D)
↓
(可选)添加 Triggers / Modifiers
↓
创建 Input Mapping Context 资产
↓
将 InputAction 添加到 Mapping Context 并绑定按键
↓
在角色/Pawn 蓝图中使用 Add Mapping Context 添加上下文
↓
在事件图表中使用 EnhancedInputAction 节点处理输入
5.3 常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 输入无响应 | 未添加 Mapping Context | 在 BeginPlay 中调用 Add Mapping Context |
| 移动方向错误 | Axis2D 的 X/Y 值使用错误 | 确认 X 控制左右,Y 控制前后 |
| 长按不生效 | 未设置 Hold 触发器 | 在 InputAction 的 Triggers 中添加 Hold |
| 旧版 InputAxis 不可用 | UE5 已弃用旧系统 | 改用 Enhanced Input 的 Axis2D 类型 |
六、进阶技巧
6.1 使用 Input Modifiers(输入修饰器)
Input Modifiers 可以对原始输入值进行修改,例如:
-
Dead Zone(死区):忽略摇杆的小幅度移动
-
Swizzle Input Axis Values:交换或反转轴向
-
Negate:反转输入值
6.2 运行时切换 Mapping Context
可以根据游戏状态动态切换输入映射,例如驾驶状态和行走状态使用不同的 Mapping Context:
[进入载具] → [Remove Mapping Context](移除行走控制)
→ [Add Mapping Context](添加驾驶控制)
6.3 组合键
通过多个 InputAction 组合实现组合键功能(如 Shift + 空格)。
通过以上案例和步骤,你应该已经掌握了在虚幻引擎5中使用 InputAction 和 InputAxis 节点的完整方法。核心要点是:所有输入都通过 InputAction 资产定义,通过 Mapping Context 绑定按键,最后在蓝图中使用 EnhancedInputAction 节点处理输入事件。
感谢您的来访,获取更多精彩文章请收藏本站。







暂无评论内容