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了
相关文章:
UE4 EQS环境查询 学习笔记
EQS环境查询对应Actor的范围 EQS环境查询查询对应的类 查询到即有一个蓝色的球在Actor上,里面有位置信息等等 在行为树运行EQS,按键(‘)可以看到Player的位置已经被标记 运行对应的EQS在这里放如EQS就可以了 Generated Point&…...
计算机算法分析与设计(11)---贪心算法(活动安排问题和背包问题)
文章目录 一、贪心算法概述二、活动安排问题2.1 问题概述2.2 代码编写 三、背包问题3.1 问题描述3.2 代码编写 一、贪心算法概述 1. 贪心算法的定义:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以…...
shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解&a…...
MySQL进阶(再论JDBC)——JDBC编程思想的分析 JDBC的规范架构 JDBC相关的类分析
前言 SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言,它用于定义、操作和管理数据库中的数据。SQL是一种通用的语言,可以用于多种关系型数据库管理系统(RDBMS),如MySQ…...
rabbitMQ的知识点
RabbitMQ是一种消息队列软件,它实现了高度可靠的消息传递机制。RabbitMQ支持多种消息协议,包括AMQP、STOMP、MQTT等,比较灵活。以下是一些rabbitmq的知识点: 1. 消息队列:消息队列是一种分布式系统中广泛使用的通信模…...
EtherNet/IP 库卡机器人和EtherCAT倍福PLC总线协议连接案例
EtherNet/IP 是一种适合于工业环境和对时间要求比较苛刻的应用的网络。而远创智控YC-EIPM-ECT通讯网关,是一款自主研发的EtherNet/IP 从站功能的通讯网关。它不仅可以实现EtherNet/IP 和EtherCAT的无缝连接,还可以将EtherNet/IP 作为从站连接到EtherCAT总…...
微信小程序 uniapp+vue线上洗衣店业务管理系统演89iu2
本课题意在设计一种系统的、基于用户体验的线上洗衣服务模式,具有如下的研究意义: (1)为用户提供更简单、便捷的洗衣服务模式; (2)为智能柜的盈利模式提供了新的方向; (3)通过线上系统、智能柜与洗衣工厂结合的方式,为洗衣企业构建了一套节 省人力成本的…...
Maven项目,进行编译,使用idea的 编译功能,就是正常的,但是在终端中执行 mvn clean compile 报错
一、背景: Maven项目,进行编译,使用idea的 编译功能,就是正常的,但是在终端中执行 mvn clean compile 报错 报错信息: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin…...
mssql还原数据库失败
标题: Microsoft SQL Server Management Studio ------------------------------ 服务器 "192.168.31.132" 的 附加数据库 失败。 (Microsoft.SqlServer.Smo) 有关帮助信息,请单击: https://go.microsoft.com/fwlink?ProdNameMicrosoftSQLServer&…...
Linux多线程编程- 无名信号量
简介 无名信号量(在 POSIX 环境下通常指 sem_t 类型的信号量)是用于同步和互斥的原语,它允许线程和进程按照预期的顺序执行,并确保对共享资源的安全访问。无名信号量与命名信号量的主要区别在于它们的可见性和生命周期。无名信号…...
【网络协议】聊聊DHCP和PXE 工作原理
DHCP 动态主机配置协议 对于每个主机来说,只要连接了网络,那么就会配置一个IP地址,那么这个IP地址,如果是手动配置的话,对于公司内部的人员来说都要找IT进行配置,这个太浪费人力物力了,所以解决…...
发现国内优秀的团队协作软件,帮助提高工作效率
中国有许多优秀的团队协作软件,它们在企业和组织中发挥着重要作用。 以下是一些最受欢迎的团队协作软件: 1、钉钉(DingTalk): 这是一款由阿里巴巴推出的企业级协作工具,旨在帮助企业和组织实现高效沟通和协作。钉钉提…...
LeetCode 面试题 08.12. 八皇后
文章目录 一、题目二、C# 题解 一、题目 设计一种算法,打印 N 皇后在 N N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。 注意&#…...
Excel 的下拉列表
可以将 Sheet6 隐藏,就更好地隐藏了来源。...
基于Effect的组件设计 | 京东云技术团队
Effect的概念起源 从输入输出的角度理解Effect https://link.excalidraw.com/p/readonly/KXAy7d2DlnkM8X1yps6L 编程中的Effect起源于函数式编程中纯函数的概念 纯函数是指在相同的输入下,总是产生相同的输出,并且没有任何副作用(side effect)的函数。…...
541. 反转字符串 II
541. 反转字符串 II class Solution { public:void Reverse(string& s, int start, int end){end--;while (start < end){swap(s[start], s[end]);start;end--;}}string reverseStr(string s, int k){int len s.size();for (int i 0; i < len; i 2 * k){if (i …...
基本分段存储管理方式(分段,段表,地址转换以及与分页管理对比)
1.分段 1.进程的地址空间: 按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名 (在低级语言中,程序员使用段名来编程),每段从0开始编址. 2.内存分配规则: 以段为单位进行分配,每个段在内存中占据…...
哪个牌子的洗地机好用?2023洗地机推荐
洗地机作为一款高效的清洁家电能轻松的搞定各种干湿垃圾,满足日常生活中的各种地面清洁需求,越来越受大众的青睐,那么我们如何快速的选择一款适合自己无线洗地机呢?一起来看看! 做推荐之前,先给大家科普选购洗地机的时候应该关注…...
根据脑图谱获取感兴趣区域的mask
根据脑图谱获取感兴趣区域的mask 1,引入1.1 ASPECT-Atlas 2,获取脑图谱感兴趣区域mask参考: 1,引入 脑影像分析中,我们常常会针对性的对某些感兴趣区域进行分析,而对它们进行分析的前提是获取该区域的mask…...
Android Framework通信:Handler
文章目录 前言一、Handler源码分析1、创建Handler2、发送消息3、取消息4、消息处理5、线程切换的方法(Handler异步消息处理机制流程)handler.sendMessage()handler.post()View.post()Activity中的runOnUiThread() 二、Handler高频面试题1、为什么要有Han…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
