26_ue4进阶末日生存游戏开发[僵尸添加动画和扣血效果]

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

首先新建一个动画文件夹

 新建一个动画蓝图

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

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

 重命名Zombie_animationBP

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

 重命名为default,并连线

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

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

 

进入这个状态节点

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

添加三个元素

 将每个动画放进去

 

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

我们从1变成了3

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

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

 

新加walk状态节点

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

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

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

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

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

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

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

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

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

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

 点击这个过度条件

 

 

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

我们创建一个枚举数据。

 

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

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

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

 

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

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

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

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

 

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

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

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

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

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

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

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

 覆写方法和创建变量

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

 给这个任务重命名:BTT_SwitchState

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

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

 

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

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

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

我们是等待了3.5s

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

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

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

 

覆写函数并新建变量

得到角色与僵尸的距离

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

默认值改为100

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

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

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

 将结果赋值到黑板

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

 

调整参数

 

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

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

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

左右分别这么设置

 

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

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

下面开始解决各种bug

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

这里添加一个过度

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

 

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

两个过度时间都缩到0.1s

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

还是添加变量+覆写函数

首先得到target的location

得到僵尸的位置

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

 设置僵尸的转向

 执行成功

添加任务

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

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

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

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

 新建一个通知,并命名

 

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

 选择我们刚刚创建的通知

 

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

 

 

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

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

 

 

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

 连线

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

还是先覆写,再添加参数

 

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

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

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

 

 最后将主角hp进行更新

 测试成功。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情的阅读机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值