动画入门【案例】

项目配置

UE版本:5.1.1

创建一个第三人称游戏项目

image-20230417224624182

将下面两个素材导入项目

image-20230417224659156

image-20230417224721179

创建一个Blueprints文件夹,在这个文件夹下创建一个游戏模式,命名为BP_WuKongGameMode

image-20230417224923920

将默认的Pawn改为SunWuKongPlayerCharacter

image-20230417225104227

将这个游戏模式设为默认的游戏模式

image-20230417225141769

将SoulCave里面的LV_Soul_Cave移动到自己的Maps文件夹内,并设置为默认地图

基础动画

创建一个角色蓝图,命名为BP_WuKong,并将它设置为游戏模式的默认Pawn

image-20230418195227838

配置骨骼网格体,并设置对应的位置和旋转

然后加上一个弹簧臂组件(CameraBoom)和一个摄像机(FollowCamera)

image-20230418195309223

前后移动

可以直接从UE默认创建的BP_ThirdPersonCharacter里面将如下蓝图复制到自己的BP_WuKong里,用于控制角色的前后左右移动

image-20230418195528537

旋转

和上面类似,从BP_ThirdPersonCharacter里将下面这段蓝图复制过来

image-20230418200348670image-20230418200424513

选择不使用控制器旋转角色

image-20230418201830333

打开摄像机弹簧臂的使用Pawn控制旋转

image-20230418201936165

并打开角色移动的将旋转朝向运动

image-20230418202007726

角色奔跑

创建一个动画蓝图,命名为AnimBP_WuKong,用于控制动画逻辑

image-20230418200812004

将这个动画蓝图绑定到BP_WuKong里

image-20230418205502912

同时在BP_WuKong里编写一段逻辑,当我们按下键盘的左Shift键时,悟空的移动速度就变快

image-20230418205603719

下面,我们会用两种方式来实现悟空的奔跑动画

混合空间

这一小节,我们会用混合空间来实现奔跑效果

首先创建一个混合空间1D,命名为IdletoRun1D,用于混合不同的动画

image-20230418204648375

在混合空间中,设置水平坐标的名称为Speed

然后分别将资产浏览器里面的Idle拖到0坐标;Jog_Fwd_Start拖到300坐标;Jog_Fwd拖到600坐标

你可以把Speed理解为一个参数,这个参数最小是0,最大是600

Speed的大小,就决定了这个混合空间最终输出的动画效果

image-20230418204802557

image-20230418204923160

接着打开AnimBP_WuKong,将混合空间应用到里面

image-20230418205041538

然后编写这一段控制逻辑

image-20230418205108235

上面的这波操作,会实时检测当前角色的移动速度,然后根据这个速度在混合空间里计算出动画效果,并输出出来

状态机

除了混合空间之外,还可以使用状态机来控制角色动画

首先在动画蓝图里创建一个状态机

image-20230418211254162

双击进去状态机,创建三个状态

image-20230419204321551

分别在Idle、Run和JogStart里配置对应的动画姿势

image-20230418211418783

image-20230419204351338

image-20230419204343899

然后配置状态与状态之间的转换规则(就是Idle到JogStart,或者 JogStart到Idle的小箭头)

先打开动画蓝图的事件图表,创建一个状态,用于查看当前角色是否有加速度

image-20230419204544708

用于配置Idle到JogStart的转换规则

image-20230419204609562

JogStart到Run的转换规则如下

获取当前起跑动画的剩余时间,如果起跑动画快结束了,就进入Run的状态

image-20230419204639901

Run到Idle的状态,也是通过加速度状态来决定的

image-20230419204747058

动画重定向

首先导入初学者内容包,我们会将里面的动画重定向给悟空

image-20230420214122748

image-20230420214131875

创建一个IK绑定

image-20230420214325228

选择小白人,命名为Man_IKRig

image-20230420214401226

创建一些链条,注意配置初始骨骼和末端骨骼,可以选中之后直接右键新建

image-20230420224714965

image-20230420214941260

然后选中root,右键,设置重定向根,不然的话动画就会失去重心

image-20230420215036656

然后对悟空的骨骼也做同样的操作,创建一个IK绑定,选择对应的骨骼网格体,命名为WuKong_IKRig

image-20230420215237218

新增对应的链条,然后设置重定向根

image-20230420215737641

image-20230420215811440

两个IK绑定创建完毕之后,我们再创建一个IK重定向器

image-20230420215932506

我们要把小白人的动画复制给悟空,所以这里选小白人的IK绑定

image-20230420220053576

将目标IKGig资产设置为刚刚创建的WuKong_Rig,然后调整一下偏移,就可以直接选择小白人的动画导出了(这里WuKong的衣服会有些问题,暂不深入讨论)

image-20230420225206796

保存好这个重定向管理器之后,也可以在外面直接选中动画(也可以多选),然后复制和重定向动画资产

image-20230420223502426

image-20230420223549214

蒙太奇

蒙太奇可以用于将动画合并至一个资产并通过蓝图控制播放

我们可以选中一个动画序列,然后右键创建蒙太奇

image-20230423203312576

播放动画

在动画蒙太奇中,动画序列以插槽来划分并播放,我们播放蒙太奇的时候,需要先在动画蓝图里指定插槽

这里以悟空的默认资产举例

image-20230423203448939

可以看到这个蒙太奇中的默认插槽是DefaultGroup.UpperBody,那么我们就需要在动画蓝图里指定这个插槽

image-20230423203557030

然后就可以在蓝图里通过播放蒙太奇来播放动画了

image-20230423203621637

通知事件

我们打开创建的蒙太奇,会看到有一条默认的通知轨道,你可以创建多条通知轨道,也可以在轨道上右键创建通知,通知的类型多种多样,可以根据实际要求来决定

image-20230423213213274

这里在第一条轨道里,我创建了SaveAttack和ResetCombo这两个通知事件,分别用于保存和重置攻击状态

第二条轨道里是一个播放音效的通知,可以在这里选择在当前时间点要播放的声音

image-20230423213503448

第三条轨道里放的是特效通知,可以在选定的时间和骨骼插槽上播放特定的特效

image-20230423213551783

实现连招

在蒙太奇里配好通知的同时,我们可以在动画蓝图中直接调用这些事件

比如当这个蒙太奇运行到SaveAttack和ResetCombo这两个通知时间点的时候,我们就可以调用蓝图里对应的函数

image-20230423213730563

这两个函数的具体实现如下

image-20230423214055188

image-20230423214122510

配置好之后点击运行,在鼠标的不断点击下,悟空就可以做出连招效果了