网站做彩票,做网站的经验和体会,琼海在线,建站优化一条龙行为树(Behavior Tree)#xff0c;有4大类型的Node#xff1a;
(1) Composites Node 组合节点#xff0c;包括经典的#xff1a;Sequence#xff0c;Selector#xff0c;Parallel * Selector Node 当执行本类型Node时#xff0c;它将从begin到end迭代执行自己的Ch…行为树(Behavior Tree)有4大类型的Node
(1) Composites Node 组合节点包括经典的SequenceSelectorParallel * Selector Node 当执行本类型Node时它将从begin到end迭代执行自己的Child Node 如遇到一个Child Node执行后返回True那停止迭代 本Node向自己的Parent Node也返回True否则所有Child Node都返回False 那本Node向自己的Parent Node返回False。 * Sequence Node 当执行本类型Node时它将从begin到end迭代执行自己的Child Node 如遇到一个Child Node执行后返回False那停止迭代 本Node向自己的Parent Node也返回False否则所有Child Node都返回True 那本Node向自己的Parent Node返回True。 * Parallel Node 并发执行它的所有Child Node。 而向Parent Node返回的值和Parallel Node所采取的具体策略相关 Parallel Selector Node: 有一个子节点True返回True否则返回False。 Parallel Sequence Node: 有一个子节点False返回False否则返回True。 Parallel Fall On All Node: 所有子节点False才返回False否则返回True。 Parallel Succeed On All Node: 所有子节点True才返回True否则返回False。 Parallel Hybird Node: 指定数量的子节点返回True或False后才决定结果。 Parallel Node提供了并发提高性能。 不需要像Selector/Sequence那样预判哪个Child Node应摆前哪个应摆后 常见情况是 (1)用于并行多棵Action子树。 (2)在Parallel Node下挂一棵子树并挂上多个Condition Node 以提供实时性和性能。 Parallel Node增加性能和方便性的同时也增加实现和维护复杂度。 PS上面的Selector/Sequence准确来说是Liner Selector/Liner Sequence。 AI术语中称为strictly-order按既定先后顺序迭代。 Selector和Sequence可以进一步提供非线性迭代的加权随机变种。 Weight Random Selector提供每次执行不同的First True Child Node的可能。 Weight Random Sequence则提供每次不同的迭代顺序。 AI术语中称为partial-order能使AI避免总出现可预期的结果。
(2) Decorator Node 装饰节点顾名思义就是为仅有的一个子节点额外添加一些功能比如让子task一直运行直到其返回某个运行状态值或者将task的返回值取反等等
(3) Actions Node 行为节点行为节点是真正做事的节点其为叶节点。Behavior Designer插件中自带了不少Action节点如果不够用也可以编写自己的Action。一般来说都要编写自己的Action除非用户是一个不懂脚本的美术或者策划只想简单地控制一些物件的属性。
(4) Conditinals Node 条件节点 用于判断某条件是否成立。目前看来是Behavior Designer为了贯彻职责单一的原则将判断专门作为一个节点独立处理比如判断某目标是否在视野内其实在攻击的Action里面也可以写但是这样Action就不单一了不利于视野判断处理的复用。一般条件节点出现在Sequence控制节点中其后紧跟条件成立后的Action节点。 整棵行为树中只有Condition Node和Action Node才能成为Leaf Node而也只有Leaf Node才是需要特别定制的NodeComposite Node和Decorator Node均用于控制行为树中的决策走向。(所以有些资料中也统称Condition Node和ActionNode为Behavior Node而Composite Node和Decorator Node为Decider Node。)