美文网首页
行为树-Behavious Tree

行为树-Behavious Tree

作者: jojo911 | 来源:发表于2018-11-02 16:18 被阅读0次

    Sequence 串行的AND
    序列任务类似于\”和\“操作。
    1、一旦其子任务之一返回失败,它将返回失败。
    2、如果子任务返回成功,则它将按顺序运行下一个任务。 如果所有子任务都返回成功,那么它将返回成功。
    3、一旦其子任务之一返回Running,它将返回Running。下一帧继续执行当前子任务。

    Selector 串行的OR
    选择器任务类似于\“或\”操作。。
    1、 一旦其子任务之一返回成功,它将返回成功。
    2、如果子任务返回失败,则它将按顺序运行下一个任务。 如果没有子任务返回成功,则它将返回失败。
    3、一旦其子任务之一返回Running,它将返回Running。下一帧继续执行当前子任务。



    Parallel 并行的AND(可看做Parallel Sequence)
    与序列任务类似,并行任务将运行每个子任务,直到子任务返回失败。
    1、有任何一个节点返回失败,那么Parallel立刻结束,返回失败。还处于Running的子节点也会终止(从界面上可以看出,正在Running的被假设为失败)如上图3。
    2、有任何一个节点返回成功,那么该子节点下一帧就不会被调用了,但是Parallel本身仍然返回Running,直到所有子节点都返回成功,Parallel才返回成功,如上图1,2。

    Parallel Selector 并行的OR
    与选择器任务类似,并行选择器任务将在子任务返回成功后立即返回成功。
    1、有任何一个节点返回失败,那么Parallel Selector 本身返回Running,直到所有子节点都失败了,它才返回失败。
    2、有任何一个节点返回成功,Parallel Selector 直接返回成功。

    Random Sequence 变体的Sequence
    它从还没执行过的N个子节点中随机挑选一个执行的Sequence

    Random Selector 变体的Selector
    它从还没执行过的N个子节点中随机挑选一个执行的Selector

    Priority Selector
    与选择器任务类似,优先级选择器任务将在子任务返回成功后立即返回成功。
    优先级选择器不会在树中从左到右顺序运行任务,而是询问任务确定顺序的优先级。(子任务定义优先级)
    优先级较高的任务首先运行的机会较高(升序 12345...)

    Selector Evaluator
    The selector evaluator is a selector task which reevaluates its children every tick.
    It will run the lowest priority child which returns a task status of running.
    This is done each tick.
    If a higher priority child is running and the next frame a lower priority child wants to run it will interrupt the higher priority child.
    The selector evaluator will return success as soon as the first child returns success otherwise it will keep trying higher priority children.
    This task mimics the conditional abort functionality except the child tasks don't always have to be conditional tasks.
    PS:选择器评估程序是一个选择器任务,它会在每个tick中重新评估其子项。
    它将运行优先级最低的子节点,返回任务状态为running。
    这是每个滴答。
    如果优先级较高的子节点正在运行,而较低优先级的子节点想要运行的下一帧则会中断优先级较高的子节点。
    一旦第一个孩子返回成功,选择器评估器将返回成功,否则它将继续尝试更高优先级的孩子。
    此任务模仿条件中止功能,但子任务并不总是必须是条件任务。

    Utility Selector
    The utility selector task evaluates the child tasks using Utility Theory AI.
    The child task can override the GetUtility method and return the utility value at that particular time.
    The task with the highest utility value will be selected and the existing running task will be aborted.
    The utility selector task reevaluates its children every tick.
    PS:The utility selector task使用Utility Theory AI评估子任务。 子任务可以覆盖GetUtility方法并在该特定时间返回utility value。 将选择具有最高utility value的任务,并中止现有的运行任务。 实用程序选择器任务会在每个tick中重新评估其子项。

    Lower Priority 打断右边

    LowerPriority.gif
    Lower Priority是终止比它要低级的任务,当然是在同个任务层的,左->右,任务优先级高->低
    当运行到后续节点时,本节点的判断生效了的话则打断当前执行顺序,返回本节点执行!
    如图所示:
    发现并接近目标是比巡逻序列高优先级(在左边),My Within Sight节点每帧都会执行,当My Within Sight节点返回成功,就会打断右边的巡逻序列,在本序列下执行

    Self 打断子节点
    组合节点,执行中,在未返回退出组合节点中(即在组合节点执行过程中),会循环执行到的条件子节点,当条件结果变化时,正在执行的任务会终止,并重新评估执行组合节点
    这是一种自包含中断类型。也就是会检测此节点下所有条件判断节点,即便是被执行过的节点,如果判断条件不满足则打断当前执行顺序从新回到判断节点判断,并返回判断结果!


    如图所示,第一个子节点每帧都会执行,当条件变化,重新评估。

    Both (打断右边和子节点)
    类似Self和Lower Priority,不同的是:循环执行条件的范围同时包含了两者.

    相关文章

      网友评论

          本文标题:行为树-Behavious Tree

          本文链接:https://www.haomeiwen.com/subject/tvrcxqtx.html