行为树学习的一些记录
基本概念
行为树是一种数据结构,一种自顶向下的树形结构,可以通过自顶向下,通过一些条件来搜索这颗树,最终确定需要做的行为(叶节点),并且执行它。也就是可以构造游戏中 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
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nico233's blog!