11.创建 Service 节点

Services 附着在 Composite 节点上,只要其分支节点被执行,它们便将按所定义的频率执行。它们常用于检查和更新黑板。它们以行为树系统的形态取代了传统平行节点。

在本例中,service 节点将寻找非 AI 角色的 Pawn,然后设置 TargetToFollow 和 TargetLocation 黑板 keys。

步骤

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

  2. 点击 New Service 按钮。

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

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

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

  5. 创建如下图表:

    Copy Example

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

    variables.png

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

    变量名 类型 默认值
    DesiredObjectTypes Array of type EObjectTypeQuery 一个元素设为 Pawn
    MyLocation Vector 3 0,0,0
    AI_CON_Ref Follower_AI_CON_C
    TargetToFollow BlackboardKeySelector 无 - 但此变量的“可编辑”标记为 True,因此可在行为树中根据实例进行变更。
    TargetLocation BlackboardKeySelector 无 - 但此变量的“可编辑”标记为 True,因此可在行为树中根据实例进行变更。

变量 DesiredObjectTypes 是类型 EObjectTypeQuery 的一个阵列,有单个元素设为 Pawn。如需进行此设置,在 My Blueprint 面板下选择 DesiredObjectTypes 变量,然后在 Details 面板下的 Default Value 类目中点击 plus_button.png 按钮添加一个元素。然后在元素的下拉菜单中选择 Pawn

如 Default Value 类目中无内容显示,请对蓝图进行编译。

以下是该图表中将执行的操作:

  1. 事件标记(Event Tick) 与 Actors 中的工作方式相同,不同之处是以行为树中定义的频率进行标记。

  2. 递入的 Owner Actor 固定为调用行为树的控制器,先进行保存。在未保存时才需要进行此操作,以减少投射节点带来的系统开销。

  3. 基于受控 pawn 位置为对象执行多球体追踪(Multi Sphere Trace),获得所有 pawn,减去受控 pawn。

  4. For Each 循环将确认玩家是否被击中。

  5. 如是,执行视觉追踪,确认 AI pawn 是否能看到玩家 pawn。

  6. 如能看到,在黑板物体上为 AI pawn 设置适当的值(Target to FollowTarget Location)。

  7. 如不能看到,清除黑板上的 Target to Follow key。