UE4_f2动画添加
1.移动与跑步
首先新建一个1D的混合空间
左边可以改坐标轴的名称,最大值与最小值,以及格子的数量(动画只能插入到格子上)。
下面第二张图是从左到右分别插入了 站立,步行,跑步,间隔为180。最后留空。
添加一个动画蓝图,并且到character里在动画选项卡中应用动画蓝图并且添加上要使用的动画蓝图。
然后在动画蓝图的事件图表中,强转获得我们的角色 character0。这样就可以对其中的数值进行操作了
//Get velocity-vectorLength获得该角色的速度。
在动画蓝图的动画图表中新建一个状态机,连接到result上
双击进入该状态机,添加一个状态。
双击进入该状态,把我们unarmed的混合空间通过右下侧的资源添加进来,并且把我们在事件图表中获得的speed变量指向unarmed,用来告知unarmed应该播放什么动画
添加冲刺
冲刺需要三个动画,冲刺开始,冲刺循环,冲刺结束。
在状态机中添加这三种状态,并添加条件以及相应动画。
//注意要把sprint_start和sprint_end的循环播放关掉,因为这两个动作只播放一次。
这样一套循环动作就完成了。
假设我们要实现按住shift开始跑步,首先要在项目设置中加上shift
当我们按住shift的时候,把角色的最大移动速度平缓改到800,松开的时候再改回360.
2.跳跃
首先在输入里新建一个操作jump,通过按空格实现
在character0里写上跳跃事件触发时的函数。
因为character0在创建时继承了character类,所以可以直接继承它的跳跃函数。
注意,当松开空格时要调用stop jumping,确保结束。不然只能跳跃一次。
然后添加跳跃动画。
在刚才的状态机里再添加一套状态循环,
在事件图表中获得角色是否在空中的布尔变量,作为我们判定jump的依据。
然后像添加冲刺时一样,设置每个状态的动画及触发条件。
这时有个问题,当我们正在奔跑时突然跳起,那么状态机应该怎么反应呢?
我们可以在跑步的时候添加一个判断,当is in air为真时,随即转换到起跳的jump_start中,跳跃结束时再回到跑步。
状态连线及触发条件如下。
这样就有了一个新的闭环,sprint_start--sprint_loop--jump_start--jump_loop--sprint_loop--sprint_end
3.格挡
将鼠标右键设为格挡。
新建一个判断格挡的布尔变量,当按住右键时设为真,松开后设为假
上面的block为角色蓝图中的block,是没办法直接用到动画蓝图里的,所以我们先要在动画蓝图的事件图表里获得角色的block值,然后赋值给 新建在动画蓝图中的一个布尔变量(这里也叫block)。
同样的,在状态机里新建一套格挡的状态循环。
假如格挡后会产生新的问题,即跑步时能否格挡,格挡时能否跑步,跳跃时能否格挡,格挡时能否跳跃。
我打算设置的是
跑步可以格挡,一旦格挡,随即取消跑步。
格挡时无法跑步。
跳跃时不可格挡。
格挡时不可跳跃。
格挡的蓝图修改如下
奔跑的蓝图修改如下
跳跃的蓝图修改如下