WECHAT

扫码添加微信

YoungFan 微信二维码
← 返回 和平精英绿洲启元坑点记录
踩坑记录已完成

行为树分支过早失败导致 Service 没有执行

Service 尚未到达 Tick 间隔,所在分支就已经失败退出,玩家复活后因此无法被重新发现。

行为树ServiceAI

初版丧尸行为树中,BTService_Zombie_GetTarget 挂在右侧外层 Sequence 上:

Root Selector
├─ Selector:寻找入口
│  └─ Sequence
│     └─ 寻找入口
└─ Sequence:追踪玩家  ← Service 原本挂在这里
   ├─ BTService_Zombie_GetTarget
   └─ Sequence
      ├─ 移动到目标
      └─ 攻击流程

问题表现是搜索不到玩家后,BTService_Zombie_GetTarget 不再执行;玩家复活时,丧尸也无法重新搜索到玩家。

原因是 Service 还没来得及 Tick,分支就已经失败返回,Service 随之停止。没有开启“开始搜索时立即 Tick”时,进入 Service 所在节点并不会立即执行它。如果后面没有能维持足够时间的 Task,分支存活时间甚至短于 Service 的执行间隔。

可以采用两种处理方式:

  1. 开启 Service 的“开始搜索时立即 Tick”。
  2. 将 Service 挂到根合成节点上。

UE 行为树对根合成节点做了特殊处理,挂在根节点上的 Service 会持续执行,直到整棵行为树停止。

Discussion

留言讨论

无需注册账号
正在加载留言区…

发表留言时,评论服务会记录必要的 IP 与 User-Agent 信息,用于安全审核和防止滥用。