UE虚幻引擎 AI系统回顾

UE5 AI系统总结

不断完善中

一、理清AI系统各模块的工作逻辑

  1. 需要:Character/Actor作为被AI控制的角色或者物体,AI
    Controller作为角色的控制器,AI行为树(AI BehaviorTree)作为AI控制的逻辑,黑板(Blackboard)作为AI逻辑中的大脑,存储需要用到的数据(例如决定行为的布尔值,寻物寻路的目标Actor)

  2. 创建或者开发的流程:先创建一个AI角色(Character或者Actor)——>创建一个AI
    Controller控制器赋予AI角色,明确AI角色受谁控制——>创建一个AI行为树和一个黑板,AI行为树中要指定黑板,明确用的是哪个黑板的数据——>AI控制器的事件图表中要使用EventOnPossess事件连接运行AI行为树的节点,明确AI控制器用到哪个AI行为树——>在黑板中创建行为树做决策时要用到的键——>写行为树的逻辑。下图是简单的依赖图:
    在这里插入图片描述

  3. 行为树在编写时要区分好Seletor和Sequence节点,避免用错。行为树中只提供非常基础的任务,需要创建任务蓝图类,任务类中的事件图表要正确使用开始事件节点和Finish节点。任务类蓝图中需要修改或者用到角色的功能时,可以将该功能作为函数写在AI角色蓝图中。

  4. AI行为树中要做分支用到的是装饰器,用来监控一个条件以判断是否执行它所装饰的序列。监控的是黑板中的键,要修改黑板键的具体值,可以在AI控制器或AI角色中写蓝图去修改。

  5. 任务蓝图中可能需要用到或者修改黑板键,就将它们提升为变量,然后设为可编辑实例,然后在AI行为树用到任务节点时再赋予具体的键值。(也可理解为C++的函数形参),下图为任务蓝图类中获取设置黑板键(蓝色的PatrolLocation,需要设置成可编辑实例):
    在这里插入图片描述

  6. AI控制器中需要用到或者修改黑板键,直接在事件列表中点右键寻找变量下的获取黑板,不需要指定具体时哪个黑板,因为已经为AI控制器指定了AI行为树,所以获取的黑板会运行时通过反射机制获取到AI行为树绑定的黑板,需要设置黑板键的话,从黑板调用SetValueAsVector这一类函数,函数中的键名需要与黑板中的键命是完全对应的。下图为AI控制器中获取黑板:(BlackBoard变量为右键-》变量-》获取黑板得到。紫色黑板键是提升为变量,注意默认值需要写与黑板键完全对应)
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37366618/article/details/129054345