UE5 3D动作闯关游戏 ChallengeGame 完整搭建教程
本项目为3D动作闯关游戏,基于UE5增强输入系统完成角色移动、鼠标视角操控。
一、项目创建与素材配置
蓝图节点的英文名称可以鼠标悬浮在节点上按住alt键查看。
游戏整体界面预览

- 新建UE5项目,项目命名为:ChallengeGame
- 将游戏素材导入项目中
-
素材获取:简书私信本文作者我 / B站搜索「星露Studio」
image.png
-
若导入素材后资源不加载,重启项目即可恢复正常。
image.png
二、增强输入资源创建
创建三组核心输入资源(增强输入三剑客):
-
IA_Look:二维轴捕获,用于鼠标视角控制 -
IA_Move:二维轴捕获,用于角色移动控制 -
IMC_Challenge:输入映射上下文,统一绑定所有输入按键
原理:鼠标、移动均通过屏幕二维坐标系换算控制游戏三维动作。



2.1 输入按键绑定配置
将创建的 IA 输入动作挂载至 IMC_Challenge 映射上下文,并配置对应键盘、鼠标键值。


2.2 轴向数值校正
屏幕坐标系左下为负值:
- A、S 按键对应负值轴向移动
- 开启拌合输入轴值,可自由切换 X/Y/Z 轴向向量,方便后续蓝图从默认X轴向切换到Y轴向(支持XYZ任意组合)

三、基础蓝图搭建
创建两个核心蓝图资源:
- BP_ChallengeCharacter(角色蓝图):控制角色模型、组件、移动逻辑
- BP_ChanllenmgeMode(游戏模式蓝图):控制游戏运行规则、角色生成规则
模式基础决定角色怎么个玩法,角色决定玩家长啥样。
3.1 项目全局模式配置
打开 编辑 → 项目设置 → 地图和模式
- 默认游戏模式修改为:
BP_ChanllenmgeMode

3.2 角色模型与骨骼绑定
-
将玩家的骨骼体绑定游戏基础模式
image.png -
绑定骨骼网格体资产
image.png -
调整模型方向和游戏模型方向保持一致,并且贴底部
image.png

3.3 初步运行测试
运行游戏查看初始效果

四、角色相机组件搭建
为角色蓝图添加基础组件:
- 弹簧臂组件(SpringArm)
- 摄像机组件(Camera)

根据项目参数调整位置、旋转数值,完成基础视角搭建。


五、角色输入控制蓝图逻辑
在角色事件图表中,配置鼠标视角控制与 ASWD键盘移动控制
节点搜索提示词:get player->get input local->add context
5.1 初始化输入映射(BeginPlay)
角色生成、开始运行时触发,只执行1次。
运行逻辑:角色出生后自动加载输入映射上下文
流程:
-
Get Player Controller
- Player Index = 0,获取0号本地玩家控制器(本机玩家)
-
增强输入本地玩家子系统
- 从玩家控制器取出增强输入子系统接口,给后面节点当目标
-
Add Mapping Context(添加输入映射上下文)
- Mapping Context:填入
IMC_Challenge输入映射资源,绑定键盘鼠标按键与IA输入动作 - Priority = 0:输入上下文优先级,数字越大优先级越高,普通游戏填0
- Options:默认留空
- Mapping Context:填入
💡整体流程:角色出生 → 获取本地玩家 → 加载IMC输入映射表 → 激活整套增强输入,蓝图里IA_Move、IA_Look才能接收到按键鼠标信号。
⚠️不执行这一步:所有增强输入事件完全没有反应。


5.2 键盘 ASWD 移动逻辑
镜头朝向哪,角色就往哪跑,第三人称闯关游戏标准逻辑。鼠标转动镜头,W 永远向着屏幕前方走。
基于 IA_Move 输入动作:
- Action Value:玩家输入了什么值
- Break Vector2D:二维向量拆分,输出X、Y输入强度
-
Add Movement Input:角色移动核心节点
- World Direction:世界空间移动方向向量
- Scale Value:移动倍率,默认1.0
- Force:勾选=强制移动,无视 IsMoveInputIgnored() 禁用状态
节点说明:
-
EnhancedInputAction IA_Move:绑定W/S/A/D键盘按键 -
Get Actor Forward Vector【获取Actor自身向前向量】- Target填Self,获取角色物体自身朝向的向前方向向量(物体蓝色箭头)
-
Get Actor Right Vector【获取Actor自身向右向量】- Target填Self,获取角色物体自身朝向的向右方向向量(物体红色箭头)
-
Add Movement Input(调用两次)- 第一个节点:处理前后W/S移动
- 第二个节点:处理左右A/D移动


5.3 鼠标视角控制逻辑
基于 IA_Look 二维轴输入:
-
EnhancedInputAction IA_Look- 对应输入资源 IA_Look,Value Type 设置为 Axis2D
- 绑定鼠标 X(左右移动)、鼠标 Y(上下移动)
- Triggered 执行引脚:鼠标发生移动时就触发执行这一串蓝图
- Action Value:输出 Vector2D,X = 鼠标左右偏移量,Y = 鼠标上下偏移量
-
Break Vector2D(拆解二维向量)- 接收 Action Value 的 Vector2D,拆开得到 X、Y 两个浮点数
- X → 鼠标左右移动量
- Y → 鼠标上下移动量
-
Add Controller Yaw Input【左右摇头】- Yaw = 水平旋转(左右转头)
- Val 引脚接入 Break Vector2D 的X
- 作用:告诉控制器,水平方向旋转多少角度。
-
Add Controller Pitch Input【上下抬头低头】- Pitch = 垂直旋转(抬头低头)
- Val 引脚接入 Break Vector2D 的Y
- 作用:告诉控制器,垂直方向旋转多少角度。
Target 全部填Self,代表操控当前这个玩家角色控制器。


Use Controller Rotation Yaw(取消勾选/取消控制器旋转Yaw)
参数位置:角色蓝图 → 选中Self(Pawn) → 细节面板 → Pawn分类下
Yaw:水平偏航旋转,也就是角色原地左右转身(绕Z轴旋转)
作用
-
解除【玩家控制器PlayerController】与【角色本体】水平旋转的硬绑定
- ✅勾选开启:鼠标左右转动,角色本体直接跟着一起原地转身(第一人称FPS默认配置)。
- ❌取消勾选:鼠标转动只旋转摄像机/弹簧臂,角色本体不会直接跟着鼠标原地转身,实现第三人称自由环绕镜头效果。
镜头和人物朝向解耦:鼠标可以随便转视角绕人物转圈,人物不会被动扭头。
⚠️注意:取消本项不等于人物不能转身。人物转身由另外两个参数控制:
Orient Rotation to Movement【旋转朝向运动】:勾选后,角色跑动时自动转向移动方向(RPG/闯关第三人称必备)- SpringArm弹簧臂组件开启
Use Pawn Control Rotation:保证鼠标依然可以正常转动相机,仅仅不让人物跟着转
勾选/取消效果对比
| 状态 | 表现场景 | 适用游戏 |
|---|---|---|
| ✅勾选 Use Controller Rotation Yaw | 鼠标动,人物立刻水平转身;镜头和人物朝向强制同步 | 第一人称FPS |
| ❌取消勾选 Use Controller Rotation Yaw | 鼠标只转动镜头,人物不跟随鼠标转身;跑动时依靠Orient Rotation to Movement转向移动方向 |
第三人称TPS、动作闯关、开放世界 |
常见踩坑
- 如果取消Yaw勾选,但弹簧臂没有开启
Use Pawn Control Rotation→ 鼠标转动镜头完全无反应。 - 取消Yaw同时
Orient Rotation to Movement也关闭:人物永远保持初始朝向,跑向哪个方向身体都不转。 - 第一人称必须勾选此项;第三人称几乎都要取消此项。


弹簧臂组件:使用Pawn控制旋转(Use Pawn Control Rotation)
设置位置:弹簧臂组件 → 摄像机设置 → 使用Pawn控制旋转,配套:继承Pitch、继承Yaw、继承Roll全部勾选。
核心作用
-
让弹簧臂接收玩家控制器(PlayerController)的鼠标旋转输入
当角色Use Controller Rotation Yaw(Pawn细节面板)取消勾选后,角色本体不再跟随鼠标转动;开启本选项,鼠标旋转信号依然传递给弹簧臂,实现镜头环绕旋转。
这是第三人称的必备配对设置:
- Pawn:取消「使用控制器旋转Yaw」→人物身体不跟着鼠标转头
- SpringArm弹簧臂:勾选「使用Pawn控制旋转」→鼠标依然可以转动镜头
- 子项「继承Pitch / Yaw / Roll」
- 继承Pitch:鼠标上下俯仰,控制镜头抬头低头,第三人称必须勾选
- 继承Yaw:鼠标左右水平旋转,镜头绕人物水平转圈,第三人称必须勾选
- 继承Roll:镜头翻滚,一般保留勾选,游戏中几乎不会触发
✅完整第三人称配对配置
| 对象 | 参数设置 |
|---|---|
| 角色Pawn本体 | 取消 Use Controller Rotation Yaw,人物身体不跟随鼠标旋转 |
| 弹簧臂SpringArm | ✅勾选「使用Pawn控制旋转」;Pitch/Yaw/Roll全部勾选 |
| 角色Pawn本体 | ✅开启 Orient Rotation to Movement(朝向运动旋转),跑动时身体自动转向移动方向 |
故障排查
- 弹簧臂不勾选【使用Pawn控制旋转】:鼠标移动镜头完全不动,即便写好了鼠标视角蓝图也无效。
- 弹簧臂勾选,但Pawn没有取消控制器Yaw:鼠标转动时,镜头+人物身体会一起原地转头,不是第三人称环绕镜头。
- 关闭继承Pitch,鼠标上下移动镜头不会俯仰;关闭继承Yaw,鼠标左右移动镜头不会转圈。
通俗理解
把鼠标的旋转信号“转接给弹簧臂”,不让人物本体接收,只让镜头接收。鼠标只转摄像机,人物身体只在跑动的时候才转向移动方向。
image.png
image.png
视角移动上下是反的。可以如下操作:

或者如下操作,选其中一种即可:


这时候运行,人物是朝前的。
设置将旋转朝向运动勾选即可。


六、项目运行效果
配置完成编译蓝图运行项目,实现效果:
- WASD键盘控制角色移动
-
鼠标控制视角旋转
image.png

运动动画
动画蓝图的思路是:
混合空间1D:2D包含1D,但这里1D完全足够了,玩家只有前后动画移动,不需要平面8个方向的移动动画,比如斜向翻滚。每个动画配一个方案。
设置用户动画的参数
动画蓝图:绑定多个动画参数(混合空间1D),比如这里是拿到速度参数去执行基本移动动画。
拿速度:胖类主体-获取移动组件-获取速度(向量)-只需要向量的长度-转成变量输出给其他节点用。
/Game/Code/Character/Animation下面新建动画蓝图,命名ABP_ChallengeCharacter。
ABP_ChallengeCharacter。



创建混合空间1D,命名为BS1D_Challenge。


双击进入,设置水平坐标名称Speed,最小轴值0,最大600(移动速度0-600),网格划分选择2。与网格对齐勾选,平滑时间0.2(s,秒),平滑类型设置为“立方”。


将资产浏览器站立的动画拖到最左边,“MM_Idle”。


将MM_Run_Fwd拖到最右边。(Fwd就是forward缩写)。

按住Ctrl,然后鼠标在轴线上滑动可以预览每一帧效果。
ctrl+空格打开内容侧滑菜单,打开ABP_ChallengeCharacter。
在右侧资产浏览器将BS1D_Challenge拖入到AnimGraph中。

在事件列表绑定参数提供速度。



往上脱出一条线。选择“提升为变量,命名为”Speed“。


动画加载后就执行这个Set。

编译后有动效显示:

速度变量赋值。

编译后有动效显示:

动画蓝图和角色蓝图绑定。



编译运行:









