虚幻引擎 Add Movement Input 节点

Add Movement Input 是虚幻引擎中处理角色移动的核心节点。下面是一个从零开始的完整操作指南,包含了在虚幻引擎5中的具体步骤。

1. 节点概述:它是什么?

Add Movement Input 节点用于向一个“Pawn”(可被控制的对象,如角色)添加世界空间中的移动输入

  • 核心原理:这个节点本身不直接移动角色,而是“累积”移动指令。它需要与角色的移动组件(如Character Movement Component)协同工作,在每一帧将这些累积的指令转化为实际的位移

  • 关键参数:

    • Target (目标): 要移动的Pawn对象,通常连接Self

    • World Direction (世界方向): 一个向量,指定移动的方向(例如,角色的“前”向量Get Actor Forward Vector)。

    • Scale Value (缩放值): 一个浮点数,控制移动的速度/幅度。值为1.0表示全速,0.5为半速,-1.0则反向移动

    • Force (强制): 布尔值,若为True,则无视“是否忽略移动输入”的设置强制移动。

2. 完整操作步骤(蓝图实现)

以下是创建一个可使用WASD键控制移动的角色的完整流程。

第一步:准备工作:创建角色蓝图

  1. 在内容浏览器中,右键点击,选择 蓝图类 (Blueprint Class)

  2. 在拾取父类窗口中,选择 Character 并命名(例如 BP_MyCharacter

    注意Character 类自带 Character Movement Component,能自动处理 Add Movement Input 节点的输入。如果使用更基础的 Pawn 类,则需手动编写移动逻辑

第二步:配置输入(增强输入系统)

虚幻引擎5推荐使用增强输入系统(Enhanced Input System)

  1. 创建输入操作(Input Actions)

    • 在内容浏览器中右键,选择 输入 (Input) -> 输入操作 (Input Action),创建两个资产:IA_Move 和 IA_Look

    • 分别打开它们,将 值类型 (Value Type) 都设置为 Axis2D (Vector2D)。这样,一个操作就能同时处理前后(X轴)和左右(Y轴)的移动。

  2. 创建输入映射上下文(Input Mapping Context)

    • 在内容浏览器中右键,选择 输入 (Input) -> 输入映射上下文 (Input Mapping Context),命名为 IMC_Default

    • 双击打开,点击 + 号添加映射。

      • 将 IA_Move 映射到键盘的 W, A, S, D 键

      • 将 IA_Look 映射到鼠标的 2D 轴 (Mouse 2D-Axis)

  3. 将输入上下文赋予玩家控制器

    • 打开你的角色蓝图 BP_MyCharacter,在事件图表中。

    • 在 BeginPlay 事件后,拖出节点 Get Player Controller -> Cast To Player Controller(或者直接获取)。

    • 从该控制器拖出节点 Get Enhanced Input Local Player Subsystem

    • 调用 Add Mapping Context 节点,将 IMC_Default 赋予给它,并设置优先级(Priority)

第三步:编写移动逻辑

在 BP_MyCharacter 的事件图表中:

  1. 获取输入值:从 IA_Move 的 Triggered 执行引脚拖出(Triggered 会在按键被按下并持续时触发)。然后拖出 IA_Move 的返回值引脚 Action Value,并调用 Get Vector 2D Value 来获取一个2D向量。

  2. 分解输入值:右键点击 Get Vector 2D Value 节点的返回值引脚,选择 Split Struct Pin,将向量分解为独立的 X 和 Y 值

  3. 处理前后移动(X轴)

    • 从 Triggered 引脚拖出执行线,添加 Add Movement Input 节点

    • Target:设置为 Self

    • World Direction:添加 Get Actor Forward Vector 节点并连接,这代表角色的“前”方向

    • Scale Value:连接分解出来的 X 值

  4. 处理左右移动(Y轴)

    • 从 Triggered 引脚再拖出一条执行线,添加第二个 Add Movement Input 节点

    • Target:设置为 Self

    • World Direction:添加 Get Actor Right Vector 节点并连接,这代表角色的“右”方向

    • Scale Value:连接分解出来的 Y 值

第四步:设置摄像机视角(可选但推荐)

为了让移动更直观,通常需要设置跟随角色的摄像机。

  1. 在 BP_MyCharacter 的组件 (Components) 面板中,点击 添加组件 (Add Component),添加一个 SpringArmComponent(弹簧臂)和一个 CameraComponent(摄像机),并将摄像机附在弹簧臂下

  2. 调整弹簧臂和摄像机的位置到角色身后。

  3. 在弹簧臂的细节面板中,勾选 Use Pawn Control Rotation,让弹簧臂跟随鼠标/控制器的旋转

  4. 在角色蓝图的 类默认值 (Class Defaults) 中,找到 Pawn 栏目,勾选 Use Controller Rotation Yaw,让角色面向摄像机方向

完成以上步骤后,编译并保存蓝图。将其拖入关卡,运行游戏即可使用WASD控制角色前后左右移动。

3. 蓝图节点连接示意图

4. 常见问题与解决方案

  1. 角色无法移动?

    • 检查 Add Movement Input 节点的 Scale Value 是否为 0

    • 确保 IMC_Default 已通过 Add Mapping Context 正确添加。

    • 运行游戏时,确保鼠标点击了游戏视口,键盘输入被正确捕获

    • 确认你的角色蓝图继承自 Character,而非基础的 Pawn

  2. 如何让移动速度与帧率无关?
    如果你是在 Event Tick 中手动处理移动(非Character类),需要将移动值乘以 Delta Seconds(帧时间),以确保在不同帧率的电脑上移动速度一致

  3. 如何实现冲刺(Sprint)?
    可以在按住Shift键时,将 Scale Value 乘以一个大于1的系数(如 2.0

  4. Add Movement Input 的 Force 参数有什么用?
    当角色因为某些原因(如被眩晕)被设置为“忽略移动输入”时,将 Force 设为 True 可以强制执行一次移动,常用于不可打断的击退或强制位移效果

总结

Add Movement Input 节点的标准用法是:在角色蓝图中,通过“增强输入系统”获取玩家的2D输入,然后分别使用角色的“前”向量和“右”向量作为方向,将输入值作为缩放值,传递给两个 Add Movement Input 节点。 配合 Character Movement Component,即可实现流畅的标准角色控制。

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

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

昵称

取消
昵称表情代码图片

    暂无评论内容