AI功能拓展,EQS系统
前一篇文章讲了UE4中AI的实现步骤,这一篇来讲一下AI系统的另一个单元,就是EQS系统,中文名字叫环境查询,顾名思义其实就是对当前的场景里满足条件的一些信息进行查询,并且返回结果,让我们AI根据收集的这些信息做出不同响应。使用前请务必在编辑器设置-试验性功能-AI的分类中开启EQS。
先来放出工程(UE4.18):https://pan.baidu.com/s/1nuYHP81
腾讯视频地址:https://v.qq.com/x/page/b0528zpw3cu.html
主要逻辑看视频,下面来仅就大致流程做一说明:
https://ericsong.org/wp-content/uploads/2.png
1、左侧的sequence会先等待2秒,执行一个名叫FindGM的EQS,返回值到黑板上GMPlayer,这个返回的对象是玩家,因为这一步是检测我们场景里所有的玩家;
2、中间的名为GM_AI_Env的EQS其实是很主要的,他主要负责检测AI与玩家之间的距离,并且根据权重来将网格上识别哪些为安全区域,权重越大,越安全,如下图所示的权重分布:
https://ericsong.org/wp-content/uploads/QQ截图20180102213841.png
中心区域为红色,也就是说距离目标越近,分数越低,距离目标越远,分数越高,EQS在检测时候,会将绿色区域判断为安全区域,这个安全区域只是相对于我们来讲,AI会认为绿色的区域是距离玩家越远。
这个EQS如下图所示:
https://ericsong.org/wp-content/uploads/QQ截图20180102214233.png
Distance用来检测AI和对象之间的距离,那么Distance节点有一个Distance to的值,我们选择GMPlayer;
3、GMPlayer是一个属于EQS的蓝图类型,在蓝图内叫EnvQueryContext,用来存放一些查询对象;
4、使用EnvQueryContext内的ProvideActorsSet函数,用来获取当前所有的玩家角色,那么GM_AI_Env的EQS返回的是位于黑板的MoveToLocation,这个MoveToLocation会将该EQS执行后,绿色最大的一个点位置,存储,因为EQS会检测AI和玩家的距离,AI会从身上创建一个网状检测,所以当检测到和玩家之间的距离后,会在区域内将绿色的地方标记为安全区域,再将该位置存储在MoveToLocation中。
5、移动到MoveToLocation位置。
总体来讲EQS可以理解成对当前场景进行一个特定的扫描方式,然后划分权重,或者根据过滤器划分权重,然后将权重值比作数字,Linear的分数方程下,距离目标越近,那么分数越低,距离目标越远,分数越高。
好文帮顶 清晰明了社区福利 哇哦 猫大又有小鱼干了 谢谢分享 多谢分享。 感谢分享干货:) 多谢分享干货 感谢楼主分享
页:
[1]