虚幻引擎 InputAction / InputAxis 节点

在虚幻引擎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 资产

  1. 在 内容浏览器(Content Browser) 中,导航到你想存放输入资产的文件夹(建议创建 Input/Actions 文件夹)

  2. 右键点击 → 输入(Input) → 输入动作(Input Action)

  3. 将资产命名为 IA_Jump

  4. 双击打开 IA_Jump,在细节(Details)面板中确认 值类型(Value Type) 为 Digital (bool)(默认值)

步骤2:创建 Input Mapping Context(输入映射上下文)

  1. 在内容浏览器中右键点击 → 输入(Input) → 输入映射上下文(Input Mapping Context)

  2. 命名为 IMC_Default

  3. 双击打开 IMC_Default

  4. 映射(Mappings) 区域点击 加号(+) 按钮

  5. 在 输入动作(Input Action) 下拉菜单中选择 IA_Jump

  6. 点击 添加(Add) 按钮,按下 空格键(Space Bar) 将其绑定到该动作

步骤3:在角色蓝图中使用 InputAction 节点

  1. 打开你的角色蓝图(如 BP_ThirdPersonCharacter

  2. 进入事件图表(Event Graph)

  3. 右键点击空白处,搜索 IA_Jump ——你会看到 EnhancedInputAction IA_Jump 节点

  4. 拖出该节点,它会显示 StartedTriggeredCompleted 等执行引脚

  5. 将 Started 引脚连接到 Jump 节点(角色蓝图自带功能)

  6. 将 Completed 引脚连接到 Stop Jumping 节点

提示:在蓝图中使用 InputAction 时,直接搜索 InputAction 资产的名称即可找到对应的 EnhancedInputAction 节点

步骤4:将映射上下文添加到玩家

  1. 在角色蓝图的事件开始运行(Event BeginPlay) 节点后面

  2. 拖出 Get Player Controller 节点

  3. 从 Player Controller 拖出 Get Enhanced Input Local Player Subsystem 节点

  4. 调用 Add Mapping Context 函数

  5. 将 IMC_Default 赋值给 映射上下文(Mapping Context) 参数

  6. 优先级(Priority)设置为 0

三、完整案例二:角色移动(Axis2D 类型)

这是一个使用 Axis2D 类型 InputAction 实现 WASD 角色移动的完整案例

步骤1:创建 Input Action 资产(Axis2D)

  1. 在内容浏览器中右键点击 → 输入(Input) → 输入动作(Input Action)

  2. 命名为 IA_Move

  3. 双击打开,在细节面板中将值类型(Value Type) 设置为 Axis2D (Vector2D)

步骤2:在 Mapping Context 中绑定按键

  1. 打开 IMC_Default(或新建一个)

  2. 点击 加号(+) 添加映射

  3. 选择 IA_Move 作为输入动作

  4. 添加以下按键绑定:

    • 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 节点

  1. 打开角色蓝图的事件图表

  2. 右键搜索 IA_Move,拖出 EnhancedInputAction IA_Move 节点

  3. 从 Triggered 引脚拖出连线

  4. 节点会提供 Action Value X 和 Action Value Y 输出引脚——这对应 WASD 的输入值

步骤4:构建移动逻辑

方法一:使用 Add Movement Input 节点

text
[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 两个输入参数

text
[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

  1. 创建 IA_Sprint,值类型保持 Digital (bool)

  2. 细节面板触发器(Triggers) 区域点击 加号(+) 

  3. 选择 Hold(按住) 触发器

  4. 设置 触发时间(Trigger Time) 为 0.3秒(按住0.3秒后触发)

步骤2:在 Mapping Context 中绑定

  1. 将 IA_Sprint 添加到 IMC_Default

  2. 绑定到 左 Shift 键

步骤3:在蓝图中使用

  1. 在角色蓝图事件图表中搜索 IA_Sprint

  2. 从 Started 引脚:提高角色的最大移动速度(Max Walk Speed)

  3. 从 Completed 引脚:恢复角色的最大移动速度

text
[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 完整工作流程

text
创建 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

text
[进入载具] → [Remove Mapping Context](移除行走控制)
           → [Add Mapping Context](添加驾驶控制)

6.3 组合键

通过多个 InputAction 组合实现组合键功能(如 Shift + 空格)


通过以上案例和步骤,你应该已经掌握了在虚幻引擎5中使用 InputAction 和 InputAxis 节点的完整方法。核心要点是:所有输入都通过 InputAction 资产定义,通过 Mapping Context 绑定按键,最后在蓝图中使用 EnhancedInputAction 节点处理输入事件

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容