基本概念

行为树是一种数据结构,一种自顶向下的树形结构,可以通过自顶向下,通过一些条件来搜索这颗树,最终确定需要做的行为(叶节点),并且执行它。也就是可以构造游戏中 AI 逻辑

Composite Nodes

即组合节点,只能作为行为树的非叶子节点,如何去搜索一个行为,就是这些组合节点所决定的。在组合节点上可以看出整个行为树的逻辑走向,因此,这也是行为树的特点之一——逻辑可见性

一般来说,常用的组合节点有三种:

  • Selector :从左到右执行其子分支,当第一次遇到子分支返回成功时,则停止继续执行其他分支,此时 Selector 节点返回成功,如果所有分支都返回失败时,则 Selector 节点返回失败。
  • Sequence :从左往右依次执行其子分支,当第一次遇到当第一次遇到子分支返回失败时,则停止继续执行其他分支,此时 Sequence 返回失败,如果所有分支都返回成功,此时 Sequence 返回成功
  • Parallel :也就是并行,将所有节点都执行一遍

图例:(依次为 Selector , Sequence , Parallel





Action Node

即行为节点,只能作为叶子结点存在。行为节点就是我们通过行为树决策出来的结果,比如 Move , Chase , Idle , Shoot 等等行为

Decorator Node

即装饰结点,只能作为非叶节点,其只能有一个孩子结点,作为对孩子结点的修饰,比如判断为 true 才执行后面的子节点。比如可以在追逐的行为的 Sequence 结点之前装饰一个是否触发追逐的 Decorator 结点。

Condition Node

即条件节点,只能作为叶节点存在。其可以应用在显式成功条件( explicit success condition ),就是在执行动作前总是先进行条件检测。此处配合 Selector 演示。

例如:最开始有一个 ai :其是前往 A 点然后寻找物体

将其改善为:(椭圆表示 Condition Node

此时就先检测是否在 A 点,如果在就会直接返回成功了。

TODO:带优先级的 Selector 和互斥的 Selector