欢迎光临散文网 会员登陆 & 注册

UE5.2.1 为默认角色添加蹲伏行走状态和冲刺状态

2023-08-19 21:06 作者:杀马特梓文熊  | 我要投稿

一、UE,启动

打开UE,选择游戏->第三人称模板,项目默认设置选择蓝图,不带初学者内容包(省得占硬盘空间),选择一个合适的路径,取好项目名称,然后点击右下方的“创建”按钮创建第三人称模板工程;

创建第三人称模板工程

然后便可进入到我们的工程里了;

进入到工程里

如果点击进入第三人称关卡后发现场景一片白,可以这样处理:

在右侧靠上的世界大纲窗口中选中PostProcessVolume,这个就是后期处理盒子,选中之后在下方细节面板修改其曝光补偿值,一般调到1左右就可以,根据自己需要来调节。

修改曝光补偿

二、导入所需动画资产

在这个案例中,需要导入角色蹲伏的待机动画和蹲伏行走的动画,动画资产放在文末和评论置顶;

选中好Crouch_Idle和Crouch_Walk的FBX文件后,鼠标按住往内容浏览器里拖入,这时会弹出一个窗口,提示我们设置FBX导入选项,如下图所示

导入FBX文件(动画资产)

然后我们其他的不用管,只需要为我们想要导入的动画选择骨骼就行,这里选择SK_Mannequin,点击导入所有

选择骨骼

导入完成后,双击打开Crouch_Walk动画序列,在资产详情页面设置启用根运动和强制根锁定,设置完之后关闭即可。

用根运动和强制根锁定

三、修改动画蓝图

双击打开ABP_Manny动画蓝图,进入到动画图表,然后双击Main States状态机

进入到状态机内部后,右键单击图表空白处并选择添加状态

添加状态

为新添加的状态命名,由于是要做蹲伏行走,所以这里命名为Crouch,表示蹲伏状态,在其下方的双向符号表示过度条件,比如左边表示角色从Locomotion过渡到Crouch,而右边表示角色从Crouch过渡到Locomotion

添加过渡条件

接下来先对过渡条件进行设置,在动画蓝图中新建bool类型变量,并命名为IsCrouch?(命名随意,根据自己喜好即可)

设置Locomotion到Crouch过渡条件:

设置Locomotion到Crouch过渡条件

设置Crouch到Locomotion过渡条件:

设置Crouch到Locomotion过渡条件:

设置完过渡条件后可以对Crouch状态进行编辑,在编辑Crouch状态前,我们需要新建一个1D混合空间,用于混合Crouch_Idle和Crouch_Walk动画,如下图所示(注意骨骼网格体选择SK_Mannequin):

新建混合空间1D

建完混合空间后,取个名,这里命名为CrouchBlendSpace1D,双击打开混合空间CrouchBlendSpace1D,在左侧资产详情页面,修改水平坐标名称为Speed,最小轴值为0,最大轴值为350,并在下方将Croule_Idle动画序列和Crouch_Walk动画序列拖入至网格中,其中Crouch_Idle对应的轴值为0,Crouch_Walk对应的轴值为350,设置完之后保存关闭即可

混合空间CrouchBlendSpace1D

完成之后,返回到之前的ABP_Manny动画蓝图中,进入到Crouch状态,在右侧资产浏览器中将刚刚做好的混合空间CrouchBlendSpace1D往图表中拖,如下图所示:

然后新建一个浮点类型变量,用来存储从角色蓝图中传来的速度值,取名为Speed,并将其作为输入值传至混合空间,如下图所示:

四、修改第三人称角色蓝图

打开BP_ThirdPersonCharacter蓝图类,现在需要为其添加控制蹲伏相关的蓝图,首先我们去新建一个输入操作IA_Crouch,表示输入蹲伏,

在数据资产中添加映射,按下左ctrl键时触发,设置完后保存

返回到BP_ThirdPersonCharacter,添加如下蓝图:

其中Crouched变量需要自己创建,默认值设置为false,这个变量后来是要传入到动画蓝图中的,用来设置动画蓝图中的IsCrouch?变量;Crouched为真时,表示角色处于蹲伏状态(Crouch),将其最大行走速度改为350,否则表示角色处于直立状态(Locomotion),将其最大行走速度改为500,也就是默认值

回到ABP_Manny动画蓝图,进入事件图表,在事件蓝图更新动画节点后的序列节点中添加一个输出引脚,然后编写如下蓝图,表示获取角色的速度,将其传至动画蓝图中的Speed变量中,

看不清,放大一些

同时,还需要拿到角色蓝图中的Crouched变量,将其值赋给动画蓝图中的IsCrouch?变量,在事件开始运行处,做一个类型转换,拿到第三人称角色

看不清,放大一些

然后拿到Crouched变量,将其值赋给IsCrouch?变量,蓝图如下:

编译保存后即可运行,但这时角色在蹲伏时按住空格键跳时还是保存蹲伏状态,我们希望按下空格键时角色取消蹲伏状态,那么我们可以这么做:

在BP_ThirdPersonCharacter中添加一个自定义事件,命名为“启用/解除蹲伏”,并将其连至Branch分支,如下图所示:

然后找到控制跳跃的蓝图,将其修改成如下形式,表示当角色处于蹲伏状态时,先解除蹲伏状态再跳跃,否则直接跳跃:

编译保存后即可正常运行啦。

五、添加冲刺状态

首先找到MM_Run_Fwd动画序列,复制一份出来,改个名字为MM_Sprint_Fwd

双击打开MM_Sprint_Fwd,修改比率范围为1.3,可以看到角色步伐明显加快,保存

打开BS_MM_WalkRun混合空间,修改最大轴值为750,并将MM_Sprint_Fwd拖入下方网格中,其对应的轴值为750,设置完后保存:

回到BP_ThirdPersonCharacter中写关于控制冲刺的蓝图,在写之前,同样先添加输入操作:

添加映射

在BP_ThirdPersonCharacter中编写如下蓝图,表示角色在行走时按住F键即可冲刺,松开F键时取消冲刺:

(把网格体换成SK_Manny,使用的动画蓝图换位ABP_Manny,不然不容易看到效果)

编译保存即可运行

六、一些小BUG修理

角色在冲刺时不可以蹲伏,于是将处理蹲伏的蓝图修改如下:

角色在蹲伏时不可冲刺,于是将处理冲刺的蓝图修改如下:

以上完成后,就可以实现角色冲刺,正常跑步,以及蹲伏行走状态之间的自然切换了。

蹲伏动画连接:

链接:https://pan.baidu.com/s/1c3SiIKS3nPKcrDAp9U2-GA 

提取码:waao

UE5.2.1 为默认角色添加蹲伏行走状态和冲刺状态的评论 (共 条)

分享到微博请遵守国家法律