UE5人物角色动画蓝图制作教程
UE5人物角色动画蓝图制作教程
本教程将详细介绍如何在Unreal Engine 5(UE5)中为人物角色创建动画蓝图。从基本的移动、待机状态到更复杂的发现敌人和攻击动作,通过状态机和随机序列播放器等工具,实现角色动画的流畅切换。
创建动画蓝图
首先在角色骨骼网格体上右键创建动画蓝图:
进入AnimGraph界面,创建一个状态机(stateMachine)。
Idle状态
在状态机中创建一个新的状态(State),命名为Idle。为了让待机状态更加自然,可以选择几个动画随机播放。
进入Idle状态,在右侧窗口添加几个想要播放的动画:
Walk状态
在Walk状态中,直接播放walk动画:
进入Walk状态,拉入跑步动画:
停步状态
首先需要判断角色是否在跑步。在EventGraph中通过角色获取加速度,加速度不等于0并且速度大于0就代表在移动:
在Idle状态之上创建一个停步状态,只需要播放停步的动画即可。
触发停步
在进入停步状态的条件判断中,判断当前速度大于一定值并且不是在移动即可。
回到Idle状态
在回到Idle的状态条件判断中,判断是否在移动即可:
再额外添加一个返回状态判断,勾上自动结束。
发现敌人、攻击状态
创建一个负责控制发现敌人,播放发现动作,攻击的状态:
进入并创建一个新的状态机(负责三种状态的转变),拉入发现敌人动画和跑步动画,直接连起来。再后面创建一个状态Attack,在里面使用跟Idle一样的随机序列播放:
进入从发现到跑步的条件,这里设置当发现的动作播放完百分之80就可以进入下一个(跑步):
管理状态
使用一个Enum枚举来管理不同的状态,创建枚举,添加4个状态。在AI角色蓝图中创建一个这个枚举类型的变量。在动画蓝图中,使用EventBlueprintInitializeAnimation(当初始化)来获取角色蓝图:
在Update中把角色里的枚举变量设置为本地:
Idle->Walk状态切换
在idle到walk的判断图表中,判断当前的枚举状态是否是walking。其余的类似:
- idle->Run_Attack(就判断枚举是否running)
- walk->Run_Attack(判断是否running)
- Run_Attack->Walk(判断是否walking)
- Run_Attack里面的:
- run->Attack(判断是否attack)
- attack->run(判断是否running)
在行为树实现
这里因为动画蓝图是根据角色蓝图中的变量做改变,所以在行为树上要对角色蓝图的变量修改。创建一个task,创建一个上面用到的枚举变量(通时暴露在外部,可以在外面修改):
使用:直接运行这个Task,右侧面板改状态: