Language:
Page Info
Engine Version:
Share

13. 创建装饰器

装饰器 即为其他行为树系统中的条件语句,附加到一个合成任务 节点,并定义树中的一个分支或单个节点能否被执行。

AI的Pawn足够接近目标时,该 装饰器**将停止行为树“Rapid Move To”分支的执行。此操作可利用 Rapid Move To 任务中或使用 Move To** 任务进行处理,但该装饰器可获得任何Actor并阻止任何分支的执行。因此可在一系列情况下重复使用装饰器。

步骤

内容浏览器双击 打开FollowerBT行为树。 点击 新建装饰器(New Decorator) 按钮。

将在与行为树相同的文件夹中创建该装饰器。
  1. 内容浏览器 中将其重命名为“CloseEnough”。

  2. 此时编辑器应已将其打开以便编辑。若未打开,在 内容浏览器双击 打开。

  3. 在“我的蓝图(My Blueprint)”选项卡下的“函数(Functions)部分,“覆盖(Overide)”PerformConditionCheck

    override_button.png

  4. 在新函数中创建以下图表:

    Copy Example

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

    variables.png

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

    变量名

    类型

    数值

    AI_CON_Ref

    Follower_AI_CON_C

    AcceptableDistance

    浮点

    0.0——此变量的“可编辑”标签为 True,可在行为树中根据实例进行修改。

    TargetToFollow

    BlackboardKeySelector

    空——此变量的“可编辑”标签为 True,可在行为树中根据实例进行修改。

    因其为函数图表,若使用上方图表中的 代码片段,仅能获取图表的中央部分,将不会连接首尾两端的节点。只需依据图片所示连接节点便可正常工作。

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

  6. 保存 AI 控制器以便之后进行引用。

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

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

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

此操作可避免行为树不断循环到 RapidMoveTo 又退出的行为。基本上而言,若其抓住玩家后便会停止行动。