年纪老了,记忆力差,随手写点笔记,以后忘了再来翻翻。
从用途说起吧,当一个AI需要侦察周围的是否有敌人或者队友什么的,就需要用到AIPerception了,通俗的说它可以决定这个AI的视力,听力等。
首先需要配置AIController的成员变量PerceptionComponent,主要配置的东西是UAIPerceptionComponent::SensesConfig,它是一个TArray,可以配置视力、听力的相关参数,具体有哪些可以配置,参考UAISenseConfig,和它的子类UAISenseConfig_Sight,UAISenseConfig_Hearing,还有一些其他类型的子类,比如受到伤害什么的,我就不一个一个分析啦。
到这里就算配置成功了,当AI如你定义的参数,看到敌人时UAIPerceptionComponent就会抛出事件告诉你,当感知到任何变化的时候UAIPerceptionComponent::OnPerceptionUpdated都会调用,UAIPerceptionComponent::OnTargetPerceptionUpdated这个事件会告诉你具体哪个玩意进入了这个AI的感知系统。
使用上来说,就这么多,下面分析一下内部的运行机制。
先说一下UAIPerceptionSystem,这个包含于UAISystem的实例,管理所有的与AIPerception相关的东西。
当一个Actor包含UAIPerceptionComponent组件时就会注册到UAIPerceptionSystem,作为一个FPerceptionListe