AI行为树叶节点:空闲 (JobNode_Idle)

功能说明

JobNode_Idle 是一个 AI 行为树的叶节点,它指示执行该行为树的实体 (SelfEntity) 进入一段时间的空闲状态。在此期间,实体不会执行任何特定的动作,而是保持“待命”状态,直到预设的空闲时间结束。此节点通常用于填充行为链中需要实体暂停或等待的间隙,例如在完成一个任务后等待下一个指示,或者单纯地在没有其他紧急任务时进行放松。

JobNode_Idle 节点可以通过一个可选的参数来指定空闲的持续时间(以游戏帧为单位)。如果未指定,它将使用基类默认的空闲时间。

可用参数

JobNode_Idle 节点允许通过 BehaviorTreeDefNode 元素的 value 属性来配置其空闲持续时间。

参数名XML参数名 (value 属性)类型默认值说明
TimeoutFramesvalue整数180可选。指定实体将保持空闲状态的帧数。180帧大约对应3秒的游戏时间(假设60帧/秒)。如果未指定此参数,则默认使用基类设定的 180 帧。

行为树节点状态 (Status) 返回值

JobNode_Idle 节点执行完毕后,会返回以下状态:

  • 运行中 (Running)
    • 空闲时间尚未结束。实体将继续保持空闲状态,并在下一个行为树tick时再次执行此节点。
  • 成功 (Success)
    • 预设的空闲时间已全部耗尽。实体已完成空闲任务,可以继续执行行为树中的下一个节点。

示例

以下是一个 BehaviorTreeDef 的示例,展示了 JobNode_Idle 如何在一个怪物行为中被使用:

<Define>
    <BehaviorTreeDef>
        <defName>MonsterPatrolBehavior</defName>
        <label>怪物巡逻行为</label>
        <description>怪物在巡逻和空闲之间切换。</description>
      
        <!-- 序列节点:先移动到巡逻点,然后空闲 -->
        <Node className="ThinkNode_Sequence">
            <childTree>
                <li>
                    <!-- 移动到一个预定义的巡逻点 -->
                    <className>JobNode_MoveToPatrolPoint</className>
                    <!-- 假设此处 JobNode_MoveToPatrolPoint 也有自己的value或子节点配置 -->
                </li>
                <li>
                    <!-- 空闲150帧 (2.5秒) -->
                    <className>JobNode_Idle</className>
                    <value>150</value> 
                </li>
            </childTree>
        </Node>

        <!-- 另外一个序列节点,展示不指定value的Idle -->
        <Node className="ThinkNode_Sequence">
            <childTree>
                <li>
                    <!-- 执行某个任务 -->
                    <className>JobNode_PerformTask</className>
                </li>
                <li>
                    <!-- 空闲默认的180帧 (3秒) -->
                    <className>JobNode_Idle</className> 
                </li>
            </childTree>
        </Node>
    </BehaviorTreeDef>
</Define>

在上述示例中:

  • 第一个 JobNode_Idle 通过 value 属性指定了 150 帧的空闲时间。
  • 第二个 JobNode_Idle 没有指定 value 属性,因此它将使用基类默认的 180 帧空闲时间。

复杂参数说明

value 属性 (空闲帧数)
  • 说明:在 BehaviorTreeDefNode 元素中,JobNode_Idle 节点的 value 属性用于直接指定空闲的帧数。它应该是一个可以被解析为整数的字符串。
  • 用法
    • <className>JobNode_Idle</className><value>300</value>:表示实体将空闲 300 帧(约 5 秒)。
    • <className>JobNode_Idle</className>:表示实体将空闲默认的 180 帧(约 3 秒)。
  • 注意事项value 属性预期接收一个纯数字字符串。如果字符串无法解析为整数,JobNode_Idle 将退回到使用默认的空闲帧数。