通过加权选择多个元素时不能使用 RandomEvaluate。
您需要获取一次 Random.value 并将其与每个元素的权重进行比较以选择运行的位置。
我们将考虑将 WeightSelector 添加到行为树中,并在未来的更新中将 CompositeComponent 公开。
行为树的最佳实践是首先提出“执行条件和动作”,然后考虑“动作的优先级”。
例如,假设我们有以下 NPC。
执行条件和动作
- 无条件:巡逻
- 发现敌人时:追踪
- 当你接近敌人时:攻击
- 体力低于30%时:恢复
- 体力低于20%时:逃跑
优先事项
- 体力低于30%时:恢复
- 体力低于20%时:逃跑
- 当你接近敌人时:攻击
- 发现敌人时:追踪
- 无条件:巡逻
如果按照这个顺序判断并执行,很可能会成为一个优秀的NPC。
如果你不能将“执行条件和动作”视为一个集合,或者如果“动作优先级”没有一致的解释,你可能需要重新考虑行为树是否合适。