13.创建 Decorator 节点

Decorators 即为其他行为树系统中的条件语句,附着于一个 CompositeTask 节点,并定义树中的一个分支或单个节点是否能被执行。

AI Pawn 接近目标时,Decorator 将停止执行行为树中的 Rapid Move To 分支。利用 Rapid Move ToMove To Task 节点也可执行该操作,但 decorator 可接收任何 Actor 并阻止任何分支的执行。在许多情况下均可重复利用。

步骤

  1. 内容浏览器双击 打开 FollowerBT 行为树。

  2. 点击 New Decorator 按钮。

    它将创建于和行为树相同的文件夹中。

  3. 内容浏览器 中将其重命名为 “CloseEnough”。

  4. 编辑器应已将其打开以便编辑。如尚未打开,在 内容浏览器双击 打开。

  5. 在 My Blueprint 标签下的 Functions 部分中,“覆盖” PerformConditionCheck

    override_button.png

  6. 在新功能中创建以下图表:

    Copy Example

    点击图片将其展开,或点击 此处 在窗口中打开。

    variables.png

    蓝图的变量名、类型和数值:

    变量名 类型 数值
    AI_CON_Ref Follower_AI_CON_C
    AcceptableDistance Float 0.0 - 但此变量的“可编辑”标记为 True,因此可在行为树中根据实例进行变更。
    TargetToFollow BlackboardKeySelector 无 - 但此变量的“可编辑”标记为 True,因此可在行为树中根据实例进行变更。

    因其为功能图表,如使用上方图表图片中的 Code Snippet,只能获取图表的中央部分,首尾两端的节点将不会被连接。只需依据图片所示连接节点便可正常执行。

  1. 当行为树根据条件命中一个节点时,事件 Receive Condition Check 将被发送至该蓝图

  2. 保存 AI 控制器以便日后轻松参考。

  3. 获取需要追踪的 Actor(玩家 Pawn)。

  4. 获取该 Actor 和 AI Pawn 之间的距离。

  5. 如距离大于可配置量,则条件将返回 True。如小于可配置量,则返回 False,并阻止其所在行为树部分的执行。

这可使其正常工作,避免行为树不断循环至 RapidMoveTo,导致 AI 反复行动。基本上而言,AI 抓住玩家后便会停止行动。