Behavior3Editor使用教程

这里简单介绍一下几类行为树节点的功能(这里的节点指树节点)
1.Composite 组合节点,可以连接多个子节点,用于决策行为树走向
2.Decorator 装饰节点, 可以连接一个子节点, 用于修饰子节点的返回值
3. Action 行为节点, 可以执行行为 (实际上也应该返回值)
4. 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的返回值,

就是子节点并不知道执行结果是成功还是失败,我得晚一点才能告诉你,那如何处理这种情况咧?

对于Sequence节点,当它再次遍历子节点的时候,还是从第一个子节点开始遍历,

但是MemSequence却会记住之前在Running的子节点,然后下次遍历的时候,

直接从Running的那个子节点开始,这可以很方便的继续之前中断的逻辑决策。

4.MemPriority 节点 逻辑和Priority一样,然后Running的概念和MemSequence一样。


Decorator衍生的有:
1.Repeator 节点,重复执行子节点maxLoop次 
2.RepeatUntilFailure 节点 ,重复执行子节点直到子节点返回Faiilure
3.RepeatUntilSuccess 节点, 你懂的
4.Limiter 节点 限制进入子节点的上限次数为maxLoop
5.Inverter 节点 反转返回值
6.MaxTime 节点 限制子节点可以执行的时间为maxTime毫秒


Action衍生的有:
1.Successder 节点 返回b3.SUCCESS
2.Failer节点 返回b3.FAILURE
3.Error节点 返回b3.ERROR(调试用)
4.Runner节点 返回b3.RUNNING
5.Wait 节点 等待milliseconds毫秒


我们可以实现自己的逻辑节点控制流程。
牢记Composite可以有多个子节点 Decorator只有一个子节点 Action 和Condition 没有子节点,

所以实际实现上Action和Condition可以归为一类,但是理念把他们分开了。
总之牢记 这三类节点 区别是子节点数目不同,没了,然后该节点返回什么值取决于逻辑做什么,就酱。


暂无评论

发布评论

分享:

支付宝

微信