• UE4 EQS环境查询 学习笔记


    EQS环境查询对应Actor的范围

    EQS环境查询查询对应的类

    查询到即有一个蓝色的球在Actor上,里面有位置信息等等

    在行为树运行EQS,按键(‘)可以看到Player的位置已经被标记

    运行对应的EQS在这里放如EQS就可以了


    Generated Point:

    Add Generated Vector就是加点的意思

    就生成对应点啦

    这里的每一个Context Location都代表使用该环境查询的Pawn的位置,用for循环代表每个Pawn的附近都生成对应点位

    Add Generated Actor就是在对应类的Actor标记位置信息


    Points: Gird

    效果如下:

    在Actor附近生成网格形状的点位


    Points: Cone


    Points: Donut


    Points: Circle


    Points: PathingGrid

    这个和Grid看起来很相似,但是PathingGrid只能在导航网格可导航范围内进行点位生成,而Grid不管是不是在导航网格内,它都生成


    Distance:

    如果时仅得分,且Scoring Equation是线性,那么就是离Pawn越近分数越低

    逆线性就是离Pawn越近分数越高

    Constant即所有都为常数1

    而球形不根据距离来计算得分,而是根据隔几个点位就加多少分

    这个暂时还不了解,以后补充


    使用EQS做随机移动

    将查询Winner位置给TargetLocation

    再MoveToTargetLocation

    效果如上


    做一个功能使得宠物永远在玩家身后跟随

    首先建立一个EnvQureyContext

    在Override位置选择提供单一Actor,把玩家Actor输出出去

    建立一个SimplieGrid

    加上Dot

    选择仅积分,且逆序,这样

    把Rotation设置为刚才创建的Context,这样包括PlayerPawn旋转也会影响到点位积分对应的值,使得玩家旋转也能保持宠物在后面跟随,第二个就是Line From也设置为之前的Context,这样就会以PlayerPawn的位置进行重新积分,Line To改为Item,因为LineFrom输出为Actor,不是FVector,是一个具体的Actor用Item,一个FVector点位用Query

    然后设置具体范围,在离玩家直线距离为100cm至200cm之间

    计算出的点位放到FVector类型的TargetLocation(黑板里面加值),然后MoveTo计算出的位置即可

    效果如下:


    制作AI逃离玩家视线:

    首先还是生成一个SimpleGrid

    选择Trace

    首先选择得分

    第二选择以玩家视角来计算点的权重,最后取消Bool Match不然会到达玩家看不到的点就不行走了

    只做Trace会存在死角,AI不动的问题,所以就得增加Distance节点

    选择仅积分,且以玩家位置的距离进行计算,越远积分值越大,这样AI被逼到死路也会根据距离判定去继续行走其它位置,并重新计算逃离玩家视线

    最后增加路径是否有效,无效则为0,有效存在值,然后设置仅积分

    只用PathExist可看到积分效果,为上图

    这样就做好了,AI躲避玩家实现的EQS了

  • 相关阅读:
    【毕业设计源码】基于微信小程序的第二课堂设计与实现
    【WPF】根据选项值显示不同的编辑控件(使用DataTemplateSelector)
    Maven
    【ESP32_8266_WiFi (八)】Stream
    利用Python进行数据分析系列之:数组和矢量计算
    科研DBCO-PEG-NIR-dyes|二苯并环辛炔-聚乙二醇-近红外染料|DBCO-PEG-近红外染料
    2-40 分页、上传和下载
    Vscode启动uniapp项目报错
    games101——作业5
    中国石油大学(北京)-《 油层物理》第一阶段在线作业
  • 原文地址:https://blog.csdn.net/qqQQqsadfj/article/details/133830470