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)。

 

 同样的,在状态机里新建一套格挡的状态循环。

 

 

 

 

 

 

 

 

假如格挡后会产生新的问题,即跑步时能否格挡,格挡时能否跑步,跳跃时能否格挡,格挡时能否跳跃。

我打算设置的是

跑步可以格挡,一旦格挡,随即取消跑步。

格挡时无法跑步。

跳跃时不可格挡。

格挡时不可跳跃。

 

格挡的蓝图修改如下

 

 奔跑的蓝图修改如下

 

 跳跃的蓝图修改如下

 

posted @ 2020-04-19 21:36  vantablack  阅读(487)  评论(0编辑  收藏  举报