UE4 行为树与EQS
行为树
-
需要创建AIController蓝图,使被AI控制的模型
-
黑板:存放变量
-
行为树:执行逻辑
-
NavMeshBoundVolume:AI移动的范围,需要创建导航网格设置移动范围,(查看NavMesh的快捷键:P)
-
行为树是从上到下,根节点向下执行,是从左到右执行相同层次的节点
-
这是一个简单的行为树
Composites:Selector,Sequence,SimpleParallel
Selector(选择):Selector 节点从左至右执行其子项,其中一个子项达成后将停止执行其子项。如 Selector 的子项达成,则 Selector 也达成。如 Selector 的所有子项未达成,则 Selector 未达成。
Sequence (序列):节点从左至右执行其子项,如其中一个子项未达成,将停止执行执行其子项。如子项未达成,则 Sequence 也未达成。如 Sequence 的所有子项均达成,则 Sequence 也达成。
(感觉Selector和Sequence的区别就在于是 ”或“ 和 ”且“ 的关系)
SimpleParallel(并行):所有子节点都运行一遍。
Decorators,Services,Tasks
Services: 定时执行一个操作,通常在根节点下的selector中执行,可以定时检查操作,常用于检查和更新黑板
Decorators:条件语句,附着雨一个Composite或者Task节点,并定义树中的一个分支或单个节点是否可以执行
Tasks:Task 是真正“执行”操作的节点,如移动 AI,或调整黑板值。
-
播放动画
-
首先设置好动画蓝图,人物运动动画来回切换,然后通过行为树修改人物设置的状态,通过行为树执行播放相应的动画
-
UE4处理并发行为的三个优点
明确:使用服务节点和简单平行节点创造的树更简明,易于观察和理解。
调试简单:图表更清晰,便于纠错。此外同时执行路径更少,更易于观察正在执行的内容。
更易于优化:由事件驱动的图表如果没有同时执行大量子树,将更易于优化。
EQS
-
EQS全称:Environment Query System,官方介绍是给虚幻提供给AI,用于收集环境数据测试分析,寻找到最符合测试的结果,EQS帮助AI筛选玩家的位置信息,将周围进行打分,选最高分或最低分,给AI选择更合的结果。
-
开启Edit–Editor Preferences–搜索框EQS,然后勾选“Environment Querying System”,然后AI框里会多一个EQS蓝图
-
测试节点介绍
Distance:距离测试节点,将选择器选取的点用给予和参照内容进行距离测试。距离越远则分值越大,如果希望越近分值越大请调整Score中的Scoring Equation,将线性递增改为递减(Inverse Linear)。
Dot:使用点乘的方式,为选取点打分,值域范围0-1(点乘有负数,打分无负数,正面为1,背面为0,呈现扇形左右递增向1)。也可以对结果进行绝对值设定(勾选Absolute Value,结果为点乘后绝对值值域0-1,正面1,背面1,左右两边0)。点乘中的向量选取可以使用两点方式或是Rotation方式。
Gameplay Tags:使用标签进行询问测试(GamePlay Tags本身是为Actor查询操作提供分层,一般用于查询。关于GT使用,我后期会出一篇文章介绍)
Overlap:在采样点,使用通道检测方式,返回是否有符合通道标记的内容存在。如存在返回1,反之返回0。检测形状,Box,Sphere,Capsule。用于检测查询某一个点附近是否存在某一样东西。
Pathfinding:将采样点与内容进行导航寻路器测试,可达则分数1,不可达为0。它将用于最终测试点生成,返回一个可达测试点。
Pathfinding Batch:将采样点与内容进行导航寻路器测试,可达则分数1,不可达为0。它会返回所有可达点,供下个测试项目使用。
Project:投射测试。可以用来修正生成器采样点位置。两种模式:导航投射,在采样点为基准,垂直向上向下进行导航检测,碰到导航覆盖点则修正采样点位置。形状检测,不考虑导航,只要在通道碰撞成立,则修正采样点到新的位置。
Trace:射线测试。用来测试采样点,到Context参照点之间是否存在遮挡,这是重要节点,一般可以用来寻找可以用来躲避的采样点(从采样点到敌人之间存在遮挡则认定可以躲避)。存在遮挡分数为1,不存在为0。注意:需要考虑高度问题,采样点一般均在地面,从地面直接发射射线到Context可能会出现被非常矮的物体阻挡,可以通过调整Height Offset解决此问题。
总结
- EQS可以和行为树相结合使用,可以实现更好的AI逻辑,相对减少了工作量,EQS内容相对较少,但是理解不是那么容易,需要手动操作实践。