AI学习当中,不学习行为树基本概念就不能明白具体实例中的操作意义,但是没有经过具体实例实验,又觉得基本概念抽象难以理解。建议先泛读(1)(2)后再对具体的细节进行死磕,能较深的理解行为树的具体概念。第一节对行为树的基本概念做个简要的介绍,第二节对行为树的官方案例做进一步分析。个人的学习顺序(2)->(1) ->(2),请感兴趣的同学根据自己的喜好自行调整阅读顺序。
一、AI学习中的两大概念
1.行为树
行为树是驱动AI运动以及做出AI决策的一棵逻辑树。
图一
2.Blackboard
行为树中所需的数据都存储在Blackboard里。
二、行为树中的几大节点
1.Root节点
Root节点是行为树的根。
特点:
(1)只能有一个连接
(2)无法被Decorator或Sevice节点附着
(3)Root没有自身属性,选中后可以显示行为树的属性,如:Blackboard资源。
2.Composite节点
Composite是行为树分支的非Root非叶子节点,即对分支以及分支的执行方式进行定义。
有三种类型的Composite节点:
(1)Selector
(2)Sequence
(3)SimpleParallel
3.Task节点
Task节点是行为树的叶子节点,也是行为树的执行节点,可用来执行具体的任务。如:移动AI,发出噪音等。
4.Decorator节点
Decorator节点是行为树中的条件判断语句。它们可以附着在Composite节点或者Task节点上,实现分支数的调整以及Task节点的执行与否。如:判断的AI当前距离与玩家的距离是否小于阈值。图中的蓝色框图都是Decorator节点。需要注意的是:图中的Blackboard Based Condition是Decorator节点是判断Blackboard中的某个key值是否被set,而Blackboard里的数据去Blackboard asset中查看。
5.Service节点
Service节点是行为树中Tick的存在。它们附着在Composite节点上,而且只有当Composite节点的分支被执行时,Service节点才会按所定义的频率进行执行。Service节点通常对Blackboard的值进行更新和修改,如:检测AI附近是否有玩家,有的话将Blackboard里定义的bool变量bIsEnemyNearBy置为True。