NodeCanvas——行为树节点介绍

1.Leafs(叶柄)

叶柄没有子节点,位于树的末端。

Action(行为)

行为
  • 行为节点将执行分配的动作任务。“行为”节点将返回“正在运行”,直到“行为任务”完成时为止,此时它将根据分配的“行为任务”返回成功或失败。NC附带了各种不同的“行动任务”以供使用。

  • Success:成功完成分配的行为任务后

  • Failure:分配的行为任务完成失败后

  • Running:分配的操作任务尚未完成时。

Condition(条件)

条件
  • 条件节点将执行条件任务,并根据该条件任务返回成功或失败。 NC附带各种要使用的条件任务。
  • Success:如果分配的条件任务为真
  • Failure:如果分配的条件任务为假

2.Composites(复合行为)

Sequencer(序列)


Sequencer按从最高优先级到最低优先级(从左到右)的顺序执行其子节点。

  • 成功:当所有子节点都成功完成
  • 失败:当任何子节点返回失败时
  • 正在运行:当前正在执行的子节点正在运行时

Selector(选择器)


Selector按从高到低的优先级(从左到右)的顺序执行其子节点。

  • 成功:当任何子节点返回成功。
  • 失败:当所有子节点都返回失败时。
  • 正在运行:当前正在执行的子节点正在运行时。

Probability Selector(概率选择器)

概率选择器将根据被选择的机会选择并执行子节点。如果该选定子级返回成功,则概率选择器还将返回成功。如果返回失败,则将选择一个新的子代。如果没有孩子返回成功,则概率选择器将返回失败,或者如果引入了“失败机会”,则可能立即返回失败。

  • 成功:当选定的子节点返回成功时。
  • 失败:选定的子节点返回失败时,或者由于“失败机会”而未选择任何子节点。
  • 正在运行:当选定的子节点返回运行时。

Priority Selector(优先选择器)

image

优先级选择器与普通选择器相似,但是将根据每个子级具有的优先级来选择子级执行的顺序。连接子节点后,将显示优先权重,您可以直接或通过Blackboard变量进行更改。

  • 成功: 第一个子节点返回成功时。
  • 失败:当所有子节点都返回失败时。
  • 正在运行: 当前子节点正在运行。

Parallel(并行)

image

并行将同时执行其所有子级。可以将其设置为具有Sequencer或Selector的策略,如下所示:

如果设置为First Failure,则任何子代返回Failure后,并行将重置所有当前的Running子代,并返回Failure。否则,当所有孩子都返回成功后,它将返回成功。

如果设置为First Success,则任何子级返回Success时,并行将重置所有当前的Running子级,并也返回Success。否则,当所有孩子都返回失败后,它将返回失败。

  • 成功:如果设置为“首次成功”,则任何孩子返回成功。如果设置为“首次失败”,则当所有孩子都成功完成时。
  • 失败:如果设置为“首次失败”,则任何子级返回失败时。如果设置为“首次成功”,则所有子项均以失败告终。
  • 正在运行:任何孩子在跑步时。

Flip Selector(反转选择器)


翻转选择器的工作方式与普通选择器类似,但是一旦子节点返回成功,它就会移到末尾(右)。因此,以前将始终先检查失败的孩子,最近再检查成功的孩子。

  • 成功: 当子级返回成功时。
  • 失败: 当所有子级都返回失败时。
  • 正在运行:当前子级正在运行。

Switch(开关)

Switch节点可以切换Enum或Integer值。根据当前的Enum或整数值,它将执行相应的子节点。如果另一个子节点先前在运行,它将被中断。连接子节点后,连接将读取枚举或整数值。

  • 成功:当前子节点返回成功时。
  • 失败:当前子节点返回失败,或者枚举或整数值相对于连接的子节点数超出范围。
  • 正在运行:当前子节点返回正在运行。

Step Iterator(步骤迭代器)

步骤迭代器类似于选择器。如果子节点返回成功,则返回成功,如果所有子节点返回失败,则返回失败。唯一的区别是,它会记住哪个子级返回成功,并从下一个子级开始下一次执行,以便在下次再次执行步骤迭代器时按顺序进行。

  • 成功:子节点返回成功时。
  • 失败:当所有子节点都返回失败时。
  • 正在运行:当前子节点正在运行时。

3.Decorators(装饰节点)

Interruptor(中断节点)

Interuptor被分配了条件任务。如果条件为真或变为真,则子节点将在运行中被中断,并且中断器将返回失败。否则,中断器将返回子节点返回的任何内容。

  • 成功:子节点返回成功时。
  • 失败:子节点返回失败时,或者即使子节点正在运行时,分配的条件为true或变为true。(打断了)。
  • 正在运行:子节点返回运行时。

Conditional(条件节点)

仅当指定的条件为true时,条件语句才会执行其子节点,然后它将返回子节点返回的任何内容。如果条件为假,但子节点尚未运行,它将返回失败。因此,换句话说,如果条件即使成功了一帧,则子节点将执行并且即使条件不再成立也不会被中断。

  • 成功:子节点返回成功时。
  • 失败:子节点返回失败,或者条件为false且子节点尚未运行时。
  • 运行:子节点返回运行时。

Inverter(逆变器)

逆变器会将其子节点的成功和失败返回状态重新映射为相反的状态。 成功:将子节点重新映射到成功时。

  • 成功:子节点返回失败时。
  • 失败:子节点返回成功时。
  • 正在运行:子节点正在运行时。

Repeater(中继器)


Repeater会重复其子级Number次,或者直到它返回指定的状态,或者Forever。

  • 成功:如果为“Repeat Times(重复次数)”,则子节点在最后一次重复时返回成功。如果为“Repeat Until(重复直到)”,则子节点返回成功且所需状态为成功时。
  • 失败:如果为“Repeat Times(重复次数)”,则子节点在最后一次重复时返回失败。如果为“Repeat Until(重复直到)”,则子节点返回失败且所需状态为失败时。
  • 运行:只要重复。

Filter(过滤器)

按特定的Numbers次数或每特定的时间量(例如Cooldown)过滤对其子节点的访问。默认情况下,如果将其过滤,则关于其父节点,该节点将被视为“不活动”。取消选择此选项将返回失败。

  • 成功:访问子节点并返回成功时。
  • 失败:访问子节点并返回失败时,或“受限时不活动”被关闭。
  • 正在运行:访问子节点并返回运行。

Iterator(迭代器)


迭代器将迭代从黑板获取的列表。在每次迭代中,将使用提供的名称将当前迭代的元素保存在同一黑板上,并将执行子节点。

可以选择将Iterator设置为在装饰的节点返回成功或失败后立即终止迭代。如果未设置任何终止条件(NONE),或者如果列表已被迭代且不满足终止条件,则Iterator将返回上一次返回的迭代子执行的结果。

如果选中了“重置索引”,则迭代器将在重置时将当前迭代的索引重置为零,否则该索引将保留,除非它是列表的最后一个索引。将其视为“for each”。

  • 成功:当列表被迭代并且子节点返回成功时,或者如果设置为“First Success(首次成功)”,则子节点首次返回成功。
  • 失败:迭代列表并且子节点返回失败,或者如果设置为“‘First Failure(首次失败)”,则子节点首次返回失败。
  • 运行:只要迭代就可以了。

Timeout(暂停节点)

如果子节点的运行时间超过以秒为单位指定的时间,则超时装饰器将中断子节点“运行”。否则,它将返回子节点返回的任何内容。

  • 成功:当子级返回成功时。
  • 失败:当子级返回失败或超时时。
  • 正在运行:子级返回跑步时。

Wait Until(等待,直到)

Wait Until将返回运行,直到分配的条件任务变为真。如果在子级被勾选后条件变为假,它将不会中断它。仅当孩子尚未运行时才检查该条件。

成功:当子级返回成功时。
失败:当子级返回失败时。
正在运行:当子级返回正在运行或条件为假时。

Optional(可选结果)

Optional Decorator在执行装饰的子节点时不考虑其成功或失败返回状态,因此就预期状态而言,它对于父节点是可选的。

  • 成功:永远不会。
  • 失败:从不。
  • 正在运行:子节点正在运行时。

Guard(守护)

如果具有相同指定令牌的另一个Guard已经在保护(运行)该令牌,​​则防止装饰的子级运行。对于为同一代理运行的所有行为树,保护是全局的。

受保护时,可以将其设置为返回失败或正在运行。

  • 成功:当子级返回成功时。
  • 失败:当子级返回失败或保护处于活动状态并设置为受保护时返回失败。
  • 正在运行:当子级返回运行或受保护时处于活动状态,并设置为在受保护时返回运行。

Override Agent(替代代理)

Override Agent将为行为树的其余部分以及直接从Blackboard变量中选择或获取的游戏对象设置另一个Agent。这意味着该装饰器下面的每个节点现在都会被该新代理选中。此装饰器是NodeCanvas允许您从单个“主”行为树控制多个代理或动态更改代理的方式之一。

  • 成功:子节点返回成功时。
  • 失败:子节点返回失败时。
  • 运行:子节点返回运行时。

4.Sub-Behaviours(子行为)

SubTree(行为树)

子树是整个其他行为树。SubTree节点将返回分配的行为树的根节点(“开始”)返回的任何内容。根行为树的代理和黑板将向下传递到子树,因此所有可用的黑板变量将相同,并且也可用于子树。

成功:当SubTree的根节点返回成功时。
失败:当SubTree的根节点返回失败时。
正在运行:当SubTree的根节点返回“正在运行”时。

NestedFSM(状态机)

可以为嵌套的FSM分配整个FSM。执行后,FSM将启动。只要FSM正在运行,NestedFSM节点将返回“正在运行”。您可以为成功指定FSM的一种状态,为失败指定另一种状态。一旦嵌套的FSM进入任何一种状态,FSM将停止,并且该节点将相应地返回成功或失败。否则,当嵌套的FSM完成时,它将返回成功。此行为树的代理和黑板将传递给嵌套FSM,因此根行为树的所有可用变量也将相同,并且可用于嵌套FSM。

成功:当嵌套FSM进入选定的成功状态时,或嵌套FSM完成时。
失败:嵌套的FSM进入选定的失败状态时。
运行:只要嵌套FSM正在运行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,841评论 0 5
  • 由于文章太长,简书放不下,完整文档见Consul文档。 一、安装 Consul Consul 的安装很简单,安装 ...
    FlySheep_ly阅读 10,113评论 1 13
  • 前言 在游戏开发中实现怪物AI逻辑的主要技术有两种:1、状态机2、行为树。 他们两者的实现机制不一样,其中状态机是...
    炉石不传说阅读 6,277评论 0 6
  • PlayMaker是什么? PlayMaker是Unity3D的一款 可视化 的 有限元状态机(Finite-st...
    shimmery阅读 39,549评论 5 68
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,284评论 0 9