16.UE5拉怪机制,怪物攻击玩家,伤害源,修复原视频中的BUG

2-18 拉怪机制,怪物攻击玩家、伤害源、黑板_哔哩哔哩_bilibili

目录

1.实行行为树实现拉怪机制

1.1行为树黑板

1.2获取施加伤害对象(伤害源)

2.修复原视频中,第二次攻击怪物后,怪物卡在原地不动的BUG

3.怪物攻击玩家


1.实行行为树实现拉怪机制

1.1行为树黑板

在AI行为树的蓝图中创建黑板,并命名为怪物黑板。

我理解的黑板是:为行为树绑定黑板,当黑板中出现指定的目标时,选择行为树的特定分支,执行特定的事件。

相当于AI的猎杀清单,当遇到清单上的目标时,会执行相应的动作。这个猎杀清单刚开始是空的,当玩家触发某些条件(攻击怪物,走到怪物领域内)在黑板中添加该玩家,实现相应动作。

黑板中存储的内容是以键值对存储的,在黑板定义时为key命名,在触发某些条件时(攻击怪物,走到怪物领域内)为对应的key赋值相应的value。

打开黑板

在黑板中新建一个object对象,并命名为目标玩家。

添加分支和装饰器,当装饰器上的目标玩家出现时,执行该分支。

创建新的AI任务蓝图:怪物走向玩家

怪物不死亡时,使用AI MOVE TO从黑板中获取到目标对象,让怪物移动到目标对象处

因为在上述任务的变量中公开了黑板属性,所以在行为树中可以编辑该属性,当该属性为目标玩家时开始执行节点。

1.2获取施加伤害对象(伤害源)

现在我们需要在游戏运行时,为我们怪物的黑板添加对象,当怪物收到玩家伤害时,给怪物的目标对象赋值为施加伤害的玩家。

主要分三步走:

1.告诉火球,谁生成了它,让他记住自己的主人是谁。

2.火球打到人后,火球传话给被打者,自己的主人是谁,你找他去算账去。

3.被打者拿到火球的主人(对象),进行仇恨的设定(反伤)等等。

1.打开角色蓝图,在发射火球的方法中,做出如下修改,告诉生成的火球,是self生成了它。

同理,流星火雨也一样。

2.打开火球蓝图(流星火雨同理),编辑重叠事件方法,火球作为话事人,告诉被打者,谁是火球的顶头上司,在火球施加应用伤害是,把instigator传递到参数damage causer上

3.被打者获取到火球的发射者,并将其添加到怪物黑板。

在怪物蓝图中变价事件任意伤害方法。

这里的Damage Causer就是火球的发射者。

前面我们说了黑板的存储是以键值对的形式存在的,我们的key=="目标玩家"上要赋值value=="火球的发射者",利用将值设为对象,self获取AI的黑板,并将黑板中key=="目标玩家"的赋值为value ==Damage Causer。

这里会有人好奇,怪物蓝图是怎么得到黑板对象,并对其赋值的。

怪物蓝图绑定了AI控制器,AI控制器运行了AI行为树,所以怪物蓝图运行了行为树,且行为树对应唯一的黑板对象,所以怪物蓝图拿到了唯一的黑板对象。

这就实现了AI自动跟踪的效果。

2.修复原视频中,第二次攻击怪物后,怪物卡在原地不动的BUG

哇,测试了很久才测出来的,视频中,为了实现让受击怪物僵直在原地的效果,有一个立即停止移动的逻辑,导致怪物在ai move to时永远也不可能成功,行为树卡在了ai move to上,

既然卡在了AI MOVE TO上,当AI MOVE TO失败后,我们继续让怪物跳回方法最初的地方继续判断和执行即可。

3.怪物攻击玩家

主要流程为下

1.行为树调用怪物普通攻击。

2.怪物普通攻击只播放蒙太奇,蒙太奇创建动画通知调用施加伤害方法。

3.施加伤害方法把伤害打到主角上。

打开怪物总类蓝图,创建怪物攻击玩家的自定义事件

1.创建怪物的普通攻击的自定义事件,就只是播放一个动画蒙太奇,随后通过在蒙太奇中添加通知的方式,调用施加伤害的方法,实现动作游戏中,特定帧造成伤害的效果。

2.施加伤害的自定义事件的实现

通过针对Object进行多球体追踪,在怪物身前70像素,100半径内获取到pawn对象

获取到pawn对象转换为玩家对象,后进行应用伤害,随后会通过动画通知调用这个方法实现。

3.创建攻击蒙太奇并添加通知

在动画蓝图中,通过通知调用001怪物的施加伤害事件

4.AI行为树调用最初的普通攻击方法

新建任务怪物攻击,怪物攻击后逗留1秒,比较自然。

逻辑很简单,怪物不死亡,直接调用怪物的普通攻击方法,即可。

总体思路:因为前面的行为树:"怪物走向玩家"成功后,才会执行这个"怪物攻击"节点,所以这个怪物的普通攻击肯定是面向主角,且距离较近,在播放普通攻击蒙太奇后,动画通知会自动调用施加伤害的方法,施加伤害通过多球体对object进行检测,获取球体内的所有pawn,如果这个pawn能转换为主角,则对主角调用应用伤害方法,最后再实现一下主角蓝图中的任意伤害事件即可,实现方法如下:

相关推荐
星火撩猿3 天前
常见游戏引擎介绍与对比
unity·ue5·游戏引擎·godot
清流君3 天前
【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
数据库·人工智能·笔记·mysql·ue5·数字孪生
Involuter3 天前
UE5 Assimp 自用
ue5
电子云与长程纠缠3 天前
Unreal Niagara制作SubUV贴图翻页动画
学习·ue5·编辑器·贴图·niagara
子燕若水3 天前
“Daz to Unreal”将 G8 角色(包括表情)从 daz3d 导入到 UE5。在 UE5 中,我发现使用某个表情并与闭眼混合后,上眼睑出现了问题
3d·ue5
半天法师4 天前
UE5.2+VarjoXR3,Lumen、GI、Nanite无效的两种解决方案
ue5·xr·vr
ue星空4 天前
UE5摄像机画面没有填充满屏幕有黑边
ue5
李詹5 天前
游戏开发核心技术解析——从引擎架构到攻防体系的完整技能树
架构·ue5·游戏引擎·游戏程序·3dsmax·虚幻
子燕若水5 天前
UE5的 Modify Curve 蓝图节点
ue5
人宅6 天前
UE5有些场景的导航生成失败解决方法
ue5