UE5(基础移动)如何制作人物移动
UE5(基础移动)如何制作人物移动
虚幻引擎5(UE5)是全球领先的实时3D创作工具,广泛应用于游戏开发、电影制作、建筑可视化等领域。本教程将手把手教你如何在UE5中制作基础的人物移动功能,包括角色创建、输入设置、动画制作等关键步骤。适合有一定UE5基础的开发者学习参考。
一. 项目资产准备
本篇教程将从虚幻资产导入开始,逐步讲解人物移动的制作流程,包括输入设置、角色生成、移动动画、IK动画以及动画混合功能。
- 首先需要获取资产,在EPIC虚幻商城中的浏览处选择角色并选择免费资源:
- 将选中的角色资产添加到你的项目中:
- 现在需要将动画文件迁移到我们的主项目中(私信并说明来意免费获取动画资源):
二. 创建角色并生成到地图
接下来,我们将创建一个角色,并将其生成在地图中。
- 创建一个玩家的蓝图角色,并命名为BP_PlayerBase。为了便于管理和维护,建议将BP_PlayerBase作为父类,并创建多个子类蓝图:
- 打开子类角色蓝图,将网格体设置为之前导入的骨骼网格体资产。注意调整角色的方向和位置,使其正确贴地:
- 为了便于观察和调试,可以为角色添加一个SpringArm组件,并在SpringArm上创建一个Camera:
- 接下来需要创建玩家控制器和游戏模式基础,以便将角色生成到地图中。在游戏模式基础设置中,将玩家控制器类设置为我们创建的控制器模式,并将默认Pawn设置为之前创建的子类蓝图:
- 在项目设置中,将默认游戏模式设置为我们创建的游戏模式,并确保选中的游戏模式是我们之前创建的部分。同时,将默认地图也修改为我们的项目地图:
- 最后,在地图中创建一个玩家出生点,就会生成我们之前设置的Pawn:
三. 设置输入映射
为了让角色能够响应玩家的输入,我们需要创建输入映射情景。
- 创建两个输入操作:IA_Look和IA_Movement:
- 对于Movement和Look来说,它们只需要在Axis2D平面移动即可。在输入映射情景中,将WASD键映射到相应的操作:
- 在PlayerBase中创建Event BeginPlay事件,通过获取控制器并添加输入映射情景:
- 为了优化性能,这里推荐使用接口来避免频繁的强制引用。创建一个引用我们控制器的接口,并在控制器中实现该接口:
四. 实现人物移动
获取event事件获取输出条件,这里只需要通过 Triggered(按下即触发)连接Add Movement Input 就可以添加移动输入,通过获取Get actor Forward Vector 来获取前后左右的向量,然后因为我们对IA_Movement的设置S控制的向量是与前进相反的所以只需要获取前进向量即可
左右的移动也一样,通过Add Movement Input 添加向右的向量,然后向左的向量相反即可。
制作鼠标输入,首先获取IA_Look,然后通过 Add Controller Yaw Input 获取上下看的输入,通过 Add Controller Pitch Input 获取左右的变量
五. IK重定向
将动画IK到我们的人物上:
复制一份IK绑定,将人物切换为我们想要切换的角色:
将链映射的源链与之对应即可获取动画:
选中所有动画进行进行导出,如果不是所有动画都能够导出,那么我们应该去存放人物模型动画的位置查看人物模型使用的是否是一样的模型,每个动画使用的模型是不一样的,找到动画对应的模型选中即可看到其他的动画,创建一个文件夹将所有动画放入文件夹即可。
六. 制作混合空间
在动画页面右键选择动画-混合空间-选择IK绑定动画的那个骨骼即可制作混合空间。
进入混合空间后将水平坐标改为运动方向,玩家可以360移动所以将轴值设置为360度,垂直坐标设置为运动速度,最小轴值设置为0,最大轴值设置为500注意这里的500是根据你的人物的最大速度的1/2决定,根据动画的数量来划分网格。
添加动画,首先动画idel状态将其放置运动速度为0的垂直轴0位置,随后设置在500的速度时切换动画为完整的前进动画,根据左右方向放置动画即可完成混合动画,我这里制作了行走、奔跑、蹲伏走三个动画混合空间。
七. 使用动画蓝图
在对应的动画中右键-动画-选择动画蓝图,进入动画蓝图后会有AnimGraph动画蓝图,和事件蓝图两个部分,创建一个状态机,打开状态机
打开状态后创建一个状态,在这个状态中选择混合空间即可将动画添加进人物动画中。进入事件蓝图,这里主要为了判断玩家是否生成,如果玩家生成那么就将玩家保存到playpawn中。将玩家生成信息保存为变量后,我们需要获取混合空间所需要的运动方向和运动速度
这里主要通过蓝图更新动画,确保我们的playerpawn是有效的,然后通过Get Velocity 将其返回值向量转换为浮点数,并保存在movement speed 中,通过get actor Rotation 和 get Velocity 一起获取 Calculate Direction 计算方向 ,并将其保存在Movement Direction。
在角色类中选择mash,将动画类选择为我们创建的动画类,人物就可以使用动画移动了。完成!