Behavior Tree
行为树通过子Task的返回值决定整棵树的走向
Task
行为树上的每个节点都称为一个Task, 每个Task存在三种状态, success, failure, running。
其中running是临时状态,仅叶子节点才能返回running状态,running结束后也要返回success或者failure。
Task的种类:
- Composite
- Behaivor(Action, Conditional)
- Decorator
Composite
组合节点,可以组合其他任意的节点,从而构成一个数,根节点一般为组合节点
- Sequence
- Selector
- Parallel(这个没有实现)
- Random
Sequence
从左到右遍历Sequence的子Task。
- 遇到failure则停止继续遍历,则Sequence直接返回failure
- 遇到success则继续遍历,若Sequence的全部子Task都返回success,则Sequence返回success
- 遇到running则停止继续遍历,并则等待running的返回值(failure或者success)
Selector
- 遇到failure继续遍历,若Selector中子Task全返回failure,则Selector返回failure
- 遇到success则停止遍历,并返回success,
- 遇到running则停止继续遍历,并等待running的返回值(failure或者success)
Priority Selector
- 类似于Selector,但是并不是顺序遍历,而是根据优先级(Priority)的顺序进行遍历
- 优先级高的优先运行
- Task的默认优先级都是0
Random Selector
- 类似于Selector,但是并不是顺序遍历,而是随机(Random)的顺序遍历
Random Sequence
- 类似于Sequence,但并不是顺序遍历,而是随机(Random)的顺序遍历
Behaivor
Decorator
游戏AI:行为树
原文:http://www.cnblogs.com/luweimy/p/4394971.html