给僵尸npc添加动画和扣血效果

首先新建一个动画文件夹

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写

 新建一个动画蓝图

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_02

 一般只要是不做汽车啊等模型,我们一般选Animinstance

因为僵尸是女英雄,所以我们选择女英雄的动画

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_03

 重命名Zombie_animationBP

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_04

进入动画蓝图,创建一个状态机

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_05

 重命名为default,并连线

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_06

 我先选了三个站立的动作,当僵尸速度为0 的时候,我们希望这三个动画随机播放。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_07

 在动画蓝图的默认状态机里面添加一个状态节点,名字为Idel

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_08

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_09

进入这个状态节点

添加一个随机序列播放器节点

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_10

添加三个元素

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_11

 将每个动画放进去

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_12

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_13

 如果我们想让哪个动画播放的概率大一点,我们就将概率权重调大一点。

我们从1变成了3

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_14

连线之后,idel状态就做好了

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_15

现在我们再把走路和奔跑的动画复制过来

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_16

新加walk状态节点

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_17

 进入节点,把walk动画拖进去。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_18

然后剩下的动作过程比较复杂,僵尸先魅惑玩家,然后奔跑,最后攻击的混合动作。

添加了魅惑和攻击的动作。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_19

 添加魅惑,奔跑,攻击节点(注意状态的过度)

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_20

 进入节点,添加一个状态机

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_21

然后进入状态机,新建三个状态节点 ,僵尸是先魅惑,然后奔跑,然后是进攻与奔跑的切换。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_22

kiss和run里面只有一个动画,Attack里面依然采用随机播放多个动画

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_23

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_24

-----------------------------------------------------------------------------------------------------------

接下来就是设置各种状态节点的转化了。

 kiss到run的状态切换条件是,kiss动画播放了80%就可以切换了,要给动画留一个过度的时间。

 点击这个过度条件

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_25

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_26

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_27

其他的状态条件需要变量来驱动。

我们创建一个枚举数据。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_28

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_29

在枚举里面添加四个变量,对应四个状态

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_30

这样的好处是,我们可以在僵尸蓝图里操控这个枚举变量。

进入僵尸蓝图,增加一个枚举类型的变量。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_31

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_32

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_33

-------------------------------------------------------------------------------------------------------

下一步工作就是让动画蓝图得到对应的pwan中的变量。

首先,当动画蓝图初始化的时候,得到拥有这个动画实例的僵尸pwan的引用。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_34

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_35

动画的每一帧,我们都去获得僵尸pwan中的状态枚举。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_36

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_37

现在我们就可以设置状态之间的转化了

idel到walk,枚举等于walk就可以转化

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_38

 进入攻击的时候要先魅惑和奔跑,所以将枚举等于run的时候,就开始魅惑了

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_39

 同理,进入攻击节点是这样的。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_40

--------------------------------------------------------------------------------------------------------------------

在行为树里驱动这些变量。

新建任务,该任务是用来修改僵尸状态的。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_41

 覆写方法和创建变量

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_42

通过自身变量设置僵尸的状态枚举变量

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_43

 给这个任务重命名:BTT_SwitchState

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_44

 补充一下,这个任务中的变量的眼睛要点亮。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_45

 添加状态转变任务,值设置为run

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_46

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_47

 打开僵尸蓝图的mesh,选择僵尸蓝图。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_48

测试:当僵尸发现我们之后,一边魅惑一边飘过来,这是因为转换状态的任务一瞬间就完成了,接着就开始move to的任务了。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_49

解决思路:这两个任务中间加一个等待任务,等待时间就是魅惑动画的时间长度。

我们是等待了3.5s

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_50

当僵尸 移动到目标1米5的地方,他的移动任务就完成了,然后就开始进行攻击。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_51

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_52

在进攻的过程中,僵尸与玩家角色的距离要不断检测。

 所以我们要新建一个服务来检测距离,名字叫BTS_CheckDistance

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_53

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_54

覆写函数并新建变量

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_55

得到角色与僵尸的距离

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_56

 在僵尸蓝图里增加一个变量攻击距离

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_57

默认值改为100

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_58

 在黑板里面增加变量InAttackRange,布尔型的,表示目标是否在攻击范围内。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_59

在新建服务中也添加相应变量

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_60

 在新建的服务中,判断是否到达攻击范围

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_61

 将结果赋值到黑板

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_62

在这个节点运行我们的服务 

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_63

调整参数

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_64

 

 把这个移动任务的参数调到20.

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_65

我们把这个左子树拆分成右子树和左子树

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_66

 为两个顺序节点添加装饰器,用是否在攻击距离这个变量

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_67

左右分别这么设置

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_68

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_69

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_70

 调整攻击距离检测服务频率

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_71

 --------------------------------------------------------------------------------------------------

下面开始解决各种bug

第一僵尸巡逻等待的时候不能站立。

这里添加一个过度

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_72

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_73

  在行为树加上这个任务节点,将状态改成idel

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_74

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_75

设置动画过度效果,如果行走的位移比较短,行走与站立的动作交替时间就会短,如果两个动画的过度时间太长,那么行走的动画就不明显,看起来像没有走路往前飘,所以我们缩短过度的持续时间,可以让行走的效果看起来更明显。

两个过度时间都缩到0.1s

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_76

现在僵尸没有办法随时面向主角,我们新建一个任务BTS_RotateTorwards,让他攻击主角的时候,自动转向

还是添加变量+覆写函数

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_77

首先得到target的location

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_78

得到僵尸的位置

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_79

 得到僵尸面向玩家位置的朝向时的转向。

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_80

 设置僵尸的转向

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_81

 执行成功

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_82

添加任务

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_83

 --------------------------------------------------------------------------------------------------------------------

现在对僵尸的攻击附加伤害。僵尸打下来的一瞬间进行扣血。

首先为两个攻击动画分别找到扣血的点

这一帧我们认为会造成打击

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_84

 新建一个通知,并命名

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_85

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_86

 动画2也是找到攻击的瞬间

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_87

 选择我们刚刚创建的通知

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_88

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_89

 

回到动画蓝图,我们就可以创建makedamage的事件了

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_90

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_91

 

 在僵尸蓝图中创建自定义事件makedamage

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_92

新增一个actor类型的变量,命名为AttackTarget

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ue4_93

 

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_94

再创建一个伤害值变量,初始值设为10

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_95

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_96

 连线

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_行为树_97

 在行为树里面新建一个攻击任务,命名为BTS_attacktarget

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_98

还是先覆写,再添加参数

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_99

 

 将黑板中的actor变量赋值给僵尸的攻击对象

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_100

 在动画蓝图中,通知造成伤害

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_覆写_101

修改树的结构,并添加设置伤害任务 节点

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_102

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_ios 提高僵尸对象崩溃率的方法_103

 

 最后将主角hp进行更新

ios 提高僵尸对象崩溃率的方法 怎么给僵尸加上效果_状态机_104

 测试成功。