这里简单介绍一下几类行为树节点的功能(这里的节点指树节点)
- Composite 组合节点,可以连接多个子节点,用于决策行为树走向
- Decorator 装饰节点, 可以连接一个子节点,用于修饰子节点的返回值
- Action 行为节点, 可以执行行为 (实际上也应该返回值)
- Condition 条件节点,可以用于做出判断并返回不同的值
上面四种节点是一种理念,不是一种实现上的限制,实际上他们除了可以拿到的参数不同,就没什么区别了。
行为树会通过访问子节点,并根据子节点的返回值决定逻辑在树中的走向。
实际上就是可视化,规范化的与或非,子交并补,if else switch case for while
依据这个理念衍生出了很多不同的节点。
就b3库而言 有
Composite衍生的有:
1.Sequence 节点 顺序执行子节点,当子节点返回b3.SUCCESS直接访问下一个子节点,直到所有子节点都返回b3.SUCCESS,
才从当前节点返回b3.SUCCESS,当子节点返回b3.FAILURE,则直接从当前节点返回b3.FAILURE 类似于逻辑与的概念。
2.Priority 节点 选择执行子节点,当子节点返回b3.FAILURE直接访问下一个子节点,直到所有子节点都返回b3.FAILURE,
才从当前节点返回b3.FAILURE,当子节点返回b3.SUCCESS,则直接从当前节点返回b3.SUCCESS 类似于逻辑或的概念。
3.MemSequence 节点 逻辑和Sequence一样,但是这里涉及到一个b3.RUNNING的返回值,
就是子节点并不知