AnimatioinStarterPack的使用(下)
11 Nov 2017 UE4 Animation
前面已经对官方的示例动画蓝图进行了还原,但是要作为原型测试时使用还是有些不足。
当前UE4版本为UE4.18.0。
这里继续对动画蓝图添加一些基本的功能。
Dead
死亡动画也是可以放到状态机的,但是如果状态机的结构很复杂的话,就会陷入需要从每个状态拉到Dead状态的窘境。
这里就需要在制作之前对状态机进行规划,例如其实静止和移动这两个状态是可以合并到一个BlendSpace中去的,再加上下蹲动画的合并,同时,将Jump和RunJump状态进行统一,状态机的数量就会减少。这里由于是原型用的,之后动画资源可能会不一样,就不会进行详细的设计和修改了。
逻辑绑定
由于这里没有游戏逻辑,所以直接按下P键就判定玩家死亡。
在Character蓝图中,调用Disable Input来关闭玩家输入,设置标志位,3秒之后重置这些状态。在此就不做其他逻辑了。
在动画蓝图的更新函数中,取得Character的死亡标记,并设置到动画蓝图中
动画蓝图
在状态机中添加Dead状态,随便拉一个Dead动画出来播放,不要循环。
然后从Idle->Dead设定条件为PawnDead,而从Dead->Idle为非PawnDead。
这样就有了基本的死亡动画逻辑。
其实官方总共准备了3种略有不同的站立死亡动画,这里可以选择随机的播放一种,使用名为Blend Poses by int的节点即可。
在Dead状态中,对动画进行操作
DeadAnimatType是新建的Int变量,需要在检测到死亡标志位时随机指定到0~2之间。
这样就有了随机死亡动画的功能了,不过这里由于没有添加Respawn的逻辑,3秒的Delay之后是直接原地站起来复活的:D
AimOffset
这也是UE4提供的动画Asset之一,其主要作用是在移动-静止动画上叠加的额外的瞄准动画。
资源准备
新建一个AimOffset打开编辑,能看到它和BlendSpace一样有两个轴向对动画进行Blend,不同之处在于AimOffset最终是叠加到已有的基础动作之上的。
要做AimOffset首先需要的是制作各个瞄准方向的基础动作,在AnimationStarterPack中,瞄准动画可以从Aim_Space_Hip的动画中取出,其中共有9个动作,帧数分别为:
0 | Aim_Center |
10 | Aim_Center_Up |
20 | Aim_Center_Down |
30 | Aim_Left_Center |
40 | Aim_Left_Up |
50 | Aim_Left_Down |
60 | Aim_Right_Center |
70 | Aim_Right_Up |
80 | Aim_Right_Down |
操作上,对Anim_Space_Hip进行复制,通过最下方的帧导航到想要的帧。
然后在帧导航条上点击右键,先删除左边的所有帧,再删除右边的所有帧
这样就能得到9个只有一帧的动画了,全部选中,然后在右键菜单中使用集合编辑功能。
然后对AdditiveSettings属性进行调整
回到刚刚新建的AnimOffset,与BlendSpace类似,设定两个轴向的名称和范围
然后将刚刚生成的9个动作拖放到关键插值点上去
这样就可以了。
动画蓝图
接下来,到动画蓝图中对AnimOffset进行使用。
首先添加两个Float变量,分别命名Aim_Yaw和Aim_Pitch
然后到动画图表中,添加AnimOffset的使用
这时,在动画蓝图的预览中就可以对AimOffset进行调试了。
如果要实际使用的话,还要在BlueprintUpdateAnimation事件或者其他地方,对这两个值进行更新。由于我这边是做的TopDown,就不继续操作了。
Montage
其他的一些动画,包括射击动画、装备切换动画都需要用到Montage。
这些动画都是与具体的资源相关性比较强的,在原型制作阶段制作的话就不会进行更多的时间投入了。
包括换枪、持枪、射击在内的动画要使用Motage,是因为身体的基本动作是一致的,不可能为每一个状态做一个对应的动画。
基本的装备切换,都是通过在Montage中添加动画通知,然后将物品切换Socket来做的。
由于只是要做一个动画蓝图来做原型用,而且要使用Montage的话,就必须从资源开始就有做好的规划,在没有进一步需求的情况下暂时就不会继续做下去了。
Montage的教程很多,直接搜索就可以了:D。