我们制作游戏的时候,角色会根据不同的武器表现出来不同的攻击动画,待机动画以及移动动画。在UE里面实现此需求,我们需要创建多个动画蓝图去实现,每个蓝图编写一遍对应的逻辑,接下来介绍一下如何使用动画模版实现此需求。
我们可以将动画蓝图相同的内容放置到一个动画模板内,将不同的内容通过使用配置项去修改。(尤其是角色资源数量特别多的时候,只需要修改动画模板即可。)实现代码的复用性。
接下来实现一个简单的动画模板创建多个动画蓝图。
在创建动画蓝图时,我们不选择特定骨架,而是直接选择模板,先创建一个通用的模版
创建一个状态机,里面用于更新角色移动状态,slot插槽则用于播放蒙太奇。
在状态机里面添加一个状态,输出当前动画状态播放的动画。
在状态里面,我们需要添加一个混合空间播放器,而不是指定一个特定的混合空间。这个实际使用的混合空间资源我们将在角色自身的动画蓝图中设置。
混合空间还需要一个速度值进行更新,所以我们还需要再事件图表中实现速度的更新,并传递给混合空间播放器。
在事件图表这里,首先你需要重载蓝图初始化动画函数。
初始化时,主要获取到动画蓝图所有者的角色移动组件,并保存为变量。
在帧更新里面,获取角色移动组件是否存在,然后获取到角色的这一帧的移动长度,并转换为速度。这个速度的值将在动画状态更新时被使用。
到这里,一个简单的动画模板创建完成,接下来,我们将基于这个模版创建动画蓝图使用。
在创建指定骨架使用的动画蓝图时,我们需要指定父类使用前面创建的动画蓝图的模板
打开以后,我们首先要进行资产覆盖,设置当前骨架使用的混合空间(案例使用了两个,拿着不同武器的混合空间)
如果查找不到,记得在窗口中打开资产覆盖编辑器。
如果设置的正确,则左侧的模型将会播放动画。如果需要多个,我们可以使用相同的方式去创建蓝图即可。