首页 > 编程语言 >UE4 C++ AI感官获取检测结果

UE4 C++ AI感官获取检测结果

时间:2024-06-16 16:34:56浏览次数:13  
标签:函数 AI Actor C++ 数组 UE4 感知 FAIStimulus

重写ActorsPerceptionUpdated函数

有委托OnPerceptionUpdated,可以自己编写函数然后进行绑定。也可以直接对ActorsPerceptionUpdated进行重写,该函数会在有感官变化时进行调用
其会根据委托获得一个数组,即AI感知到的所有发生变化的Actor。通过对这些Actor的判断即可判断是进入范围还是离开范围

获取检测结果

UE提供了FAIStimulus结构体来存储检测结果。而对于一个Actor被AI检测的所有信息,则是存储在FActorPerceptionBlueprintInfo结构体中。
可以通过当前AI的感知组件,利用GetActorsPerception函数获得特定Actor的感知信息,该函数会首先对当前Actor是否正在被销毁或者为空进行判断

FActorPerceptionBlueprintInfo ActorInfo;
AIPerceptionComponent->GetActorsPerception(Actor, ActorInfo);

得到ActorInfo之后,可以从结构体中获得LastSensedStimuli数组,该数组存储了最近一次所有感官对于该Actor的结果,通过遍历该数组,可以对某个特定的感知做操作

获取特定的感知类UAISense

可以通过获取当前World中存在的AIPerceptionSystem,该类中可以通过FAIStimulus结构体获取该结构体对应的SenseClass,返回的是TSubClassOf
这是由于AIPerceptionSystem类中存在一个数组TArray<UAISense*> Senses,而FAIStimulus数组中存放这SenseID,该ID就是Senses数组中的下标,通过SenseID既可以获得UAISense

返回结果

通过FAIStimulus结构体中的WasSuccessfullySensed()函数进行返回。

标签:函数,AI,Actor,C++,数组,UE4,感知,FAIStimulus
From: https://www.cnblogs.com/XTG111/p/18250756

相关文章

  • 2024年区块链与AI投融资动态:各领域全面崛起
    京东Java实习生招聘,有转正机会!腾讯CSIG技术产品商务(已oc)面经初入职场雷点tips-1有大佬帮忙看看简历吗,25暑期实习一直过不了简历快手测开二面面经拒了荣耀offer,感觉自己很丑陋快手测开二面面经快手秋招测开面经快手测开技术一面面经快手测开技术一面面经快手......
  • [C++] vector && list 等容器的迭代器失效问题
    标题:[C++]容器的迭代器失效问题@水墨不写bug正文开始:什么是迭代器?    迭代器是STL提供的六大组件之一,它允许我们访问容器(如vector、list、set等)中的元素,同时提供一个遍历容器的方法。然而,在使用迭代器时,我们必须注意所谓的“迭代器失效”问题。一、插入/删......
  • 【C++课程设计】通讯录管理系统
    完整代码:开源地址一、任务书 手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(假设每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个联系人)。存储在手机中的联系人的信息只包含姓名和电话号码两项信息。存储......
  • C++题解—1140—亲密数对(东方博宜OJ)
    题目描述:键盘输入 N,N 在2至 2000之间,求 2 至 N 中的亲密数对,就是A的因子和等于B,B的因子和等于A ,且A≠B。如 48和 75是亲密数对。48的因子和为2+3+4+6+8+12+16+24=75 ,而 75的因子和3+5+15+25=48 。输入:只有一行,为一个整数 N( 2≤N≤2000 )。输出:输出......
  • KAN:使用 Microsoft 的 KubeAI Application Nucleus简化边缘 AI
    我们需要的是在Kubernetes上构建和管理边缘机器学习应用程序的一致方法,一种可以加快开发和交付速度的方法。这就是KAN的作用,即KubeAIApplicationNexus。正如介绍性博客文章所指出的那样,这个名字来自一个普通话动词,翻译为“观看”或“看”。KAN是一个开源项目,托管在GitHub......
  • C++双端队列deque源码的深度学习(stack,queue的默认底层容器)
    什么是deque?deque是C++标准模板库(STL)中的一个容器,代表“双端队列”(double-endedqueue)。deque支持在其前端(front)和后端(back)进行快速插入和删除操作,并且它在序列的中间插入和删除元素时通常比vector或list更高效。deque的特点双端插入和删除:你可以在deque的头部和尾部快速......
  • 爬虫 | 异步请求aiohttp模块
    aiohttp模块,也就是asynciohttp操作#1.创建一个对象aioreq=aiohttp.ClientSession()>>>即对应异步的requests#2.用这个异步requests来发送请求resp=aioreq.get(url)#3.异步写入文件,用到aiofiles模块,pip安装,可学习:https://www.w3cschool.cn/article/86236403.h......
  • C++面向对象三大特性
    C++三大特性包括了封装、继承、多态。封装:封装是将数据属性和操作这些数据的函数(方法)捆绑在一起的过程。它隐藏了实现细节,只暴露出一个可以被外界访问的接口。封装允许开发者将对象的实现细节保护起来,只提供必要的操作界面,从而减少错误和提高代码的可维护性。继承:继承是一种......
  • Qt/C++音视频开发77-获取本地有哪些摄像头名称/ffmpeg命令日志方式
    一、前言上一篇文章讲使用ffmpeg函数接口去获取本地摄像头信息,这种方式只能从ffmpeg5版本开始才具备,那ffmpeg3/4只能干瞪眼?那肯定不行的,必须要想办法打通这个功能,查阅信息发现可以执行命令ffmpeg-fdshow-list_devicestrue-idummy去获取,会通过日志打印出来,这是一个非常好......
  • C++U7-09-并查集
    并查集(DisjointSetUnion)是一种树型的数据结构,主要用于处理一些不相交集合(DisjointSets)的合并及查询问题。并查集能解决什么问题?在线游戏公会管理:应用场景:在一个大型多人在线游戏中,玩家可以创建或加入公会(公会相当于一个团队或群体)。随着时间的推移,公会可能会合并或解散。......