【程序知识】行为树相关知识
-
定义说明
行为树是使用树状结构来描述一个物体在各种情况下执行什么行为的行为列表。例如,周末傍晚固定去某家店吃饭,就可以构成一个行为树。
行为树有水平结构与垂直结构,不过本质上没有差别,只是阅读习惯上的差异(从左到右,或是从上到下)。
行为树从根节点开始,依据从上到下,从左到右的顺序执行行为。
行为树每逻辑帧执行一次。每次执行时,继续从上一次正在执行的行为开始,按顺序执行下一个行为,直到所有行为均执行完毕。
按照实现的方式不同,行为树可能存在循环执行的情况(如果行为树完成了最后一个行为,那么重新从根节点开始执行)
节点状态
行为树的节点存在各种状态的区分。包括:
-
成功Success
代表节点包含的所有内容执行成功的状态。
-
失败Failure
代表节点存在任意内容执行失败的状态。
-
运行Running
代表节点正处于执行行为的过程中,尚未得出成功或失败的结论的状态。
节点类型
-
根节点root
最基础的节点,本身无实际意义,所有行为的出发点。可有多个子节点。
-
复合节点composite
依照特定的规律,控制多个子节点执行方式的节点。可有多个子节点。
常见复合节点包括:
-
顺序节点sequence
从左到右依次执行其子节点。如果有任意节点返回失败,那么认为该复合节点失败,只有所有节点全部成功时才认为该复合节点成功。
-
选择节点selector
从左到右依次执行其子节点。如果有任意节点返回失败,那么继续执行下一个子节点,任何一个节点全部成功时就认为该复合节点成功。
-
并行节点parallel
同时执行所有子节点。如果有任意节点返回失败,那么停止执行所有子节点并返回失败,只有所有全部成功时才认为该复合节点成功。
-
-
动作节点action
执行动作的最小单元,不会有任何子节点。由于该特点,动作节点也叫叶节点。
-
条件节点condition
仅判断条件,不执行实际动作的节点。同样不会有任何子节点。
-
装饰节点decorator
修饰其他节点的行为或结果的节点,只能有且只有一个子节点。
-