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

重写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()函数进行返回。

作者:XTG111

出处:https://www.cnblogs.com/XTG111/p/18250756

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   XTG111  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示