Artificial intelligence 行为树中的类状态动作
根据我对行为树的理解,每个行为都应该是一个简短的面向目标的动作,可以在几次迭代中完成 例如,下面是一个行为树的图像: 现在让我们假设,驱车前往敌人行为需要在树中进行多次迭代。因此,在每次传递时,都会调用“驱车前往敌人”,因为它现在处于运行状态 问题是如果附近有敌人,我想叫躲避敌人。考虑到驱车前往敌人总是被称为“躲避敌人”,我从来没有机会叫“躲避敌人”(可能应该被称为“躲避敌人”)Artificial intelligence 行为树中的类状态动作,artificial-intelligence,behavior-tree,Artificial Intelligence,Behavior Tree,根据我对行为树的理解,每个行为都应该是一个简短的面向目标的动作,可以在几次迭代中完成 例如,下面是一个行为树的图像: 现在让我们假设,驱车前往敌人行为需要在树中进行多次迭代。因此,在每次传递时,都会调用“驱车前往敌人”,因为它现在处于运行状态 问题是如果附近有敌人,我想叫躲避敌人。考虑到驱车前往敌人总是被称为“躲避敌人”,我从来没有机会叫“躲避敌人”(可能应该被称为“躲避敌人”) 无论当前正在运行什么操作,每次通过时是否都要遍历树 我这样做对吗 处理这种行为的正确方法是什么 我想说,如果下面
- 无论当前正在运行什么操作,每次通过时是否都要遍历树
- 我这样做对吗李>
- 处理这种行为的正确方法是什么
- 避敌
- 定位敌人
- 向相反方向行驶
- 并行
- 附近有敌人吗?
- 追敌
- 找到通往敌人的路
- 投敌
- 火力武器
- 追逐旗
- 定位标志
- 找到路径
- 驶向旗帜
然而,我设计系统的方式并没有使用并行行为(我使用的第三方游戏引擎不能正确地使用多线程)。取而代之的是,我有一个复合函数,它做了几乎相同的事情,只是它在每个子遍历之间计算检查。就像一种交错的,从正常执行到评估检查来回跳跃。只有当检查失败时,我们才能跳回顶部。这是一个有趣的解决方案。我还使用了一个游戏引擎,它不太适合多线程,所以我喜欢你的工作。我将尝试实现类似的功能。另外,我看过Alex Champandard的教程,他的选择器似乎在整个树上迭代,即使某个节点正在“运行”,至少他的根选择器是这样做的。