根据我对行为树的理解,每个行为都应该是一个简短的面向目标的动作,可以在几次迭代中完成。
例如,下面是行为树的图像:
现在让我们假设Drive To Enemy行为在树中需要多次迭代。因此,在每次通过Drive To Enemy时都会调用它,因为它现在处于运行状态。
问题是如果附近有敌人,我想呼叫Evade Enemy。考虑到Drive To Enemy总是被调用,我从来没有机会调用Evade Enemy(可能应该被称为 Avoid Enemy)。
- 无论当前正在运行什么动作,我都应该遍历 Tree EACH通道吗?
- 我会以正确的方式解决这个问题吗?
- 处理这种行为的正确方法是什么?