• AI行为树关键字分析


    Decotator(装饰)既然作为条件判定分为了三种判定类型,

    第一:控制输入的类型,比如BlackBoard

    第二:控制输出的类型,比如Force Success

    第三:控制执行方式,比如Loop

    系统中自定义了很多常用的Decotator,IsAtLocation(判断是不是在某个坐标)

    ForceSuccess(强制输出成功)

    CampareBBEntris(比较两个黑板Key)

    Loop(循环,可以设置次数)

    ConditionLoop(达成条件在进行循环)(条件通过KeyQuery设定)

    Composite(混合,将两个装饰放在一起判定)(可以双击打开进行自定义设置条件)

    Cooldown(冷却)(执行完成后等待时间返回失败)

    Does path exsit(判断一个点到另一个点是否有导航路径)

    Is BBEntry value of given Class(判断黑板Key是什么类型)

    ConeCheck(判断目标点是否在圆锥体中)(伤害)

    TimeLimit(时间限制)(节点中事件在规定时间内没有完成就返回失败)

    ConditionalLoop(有问题)()

    而且Decotator还可以自己定义,新建一个打开,使用PerformConditionCheckAI的函数进行判断并返回布尔值,来达到条件的判定。

    Service

    Service用于附着在Compositse,常用于更新检查黑板。以行为树的形态取代了传统分支节点,而且可以说Service自己有自己的时间轴,一旦获得焦点就开始自己的时间,可以在Detail面板中的Service设置Intrval(间隔,休息时间)(帧之间间隔的时间)以及RandomDeviation(自由偏差)。

    更新的话就是说可以将数据输入到黑板上的过程可以写在这里

    (比较能体现行为树与状态机的区别

    Simple Parallel

    支线与主线的区别有两点

    1.Imm跟Delay的区别

    Imm跟Delay的区别就是,前者将在主线Finish后迅速abort支线,返回上一级,而Delay就会等待直线任务结束再返回,但是记住不管那种情况都要Finish,假如说主线Finish后打断了支线,那么此时支线是被abort的,其中要有abort事件来Finishabort。

    返回必须要两者都Finish的,不然将会陷在某个地方。

    2.并行节点返回的成功与否是由MainTask决定的,这是无可厚非的。MainTask成功,则Simple Parallel是成功的,反之亦然。

    3.这里有一点要注意,虽然是并行,但是还是有顺序的,只是差值很小,跟蓝图中的Sequence一样,主节点还是有一点优先时间的,例子就是,在主任务的Begin后添加一个Finish,那么就会出现支线不会执行,说法是主线一开始就结束,支线还没有开始就被主线返回了。

    4.还有一种情况是,如果支线完成了,此时主线还没完成,那么支线会重新执行,直到主线也完成。

    5.不过事件的执行一般很少有在过程中的事件(例如Delay),如果以帧为单位调用事件的话,就不会存在打断情况。

    命名:事件是动词加名词,条件(装饰)命名为IsXXXXX

  • 相关阅读:
    索尼MT27i Android2.3.7 线刷Android4.04
    如何在三分钟内要到陌生女孩的电话
    闲情逸致小说嫉妒
    LINQ查询返回DataTable类型
    30个Oracle语句优化规则详解(1)
    .net session超时设置 sessionState的相关属性
    Socket请求和Http请求的各自特点、区别及适用场景
    在Oracle触发器中调用webService 或者java程序
    vs2010中使用log4net的方法
    Oracle 记录操作时长
  • 原文地址:https://www.cnblogs.com/wbx-Blog/p/7147612.html
Copyright © 2020-2023  润新知