按照我用过的行为树,说一下这个图里的逻辑。
1,顺序节点,从上往下,依次判断条件,有一个不满足返回false,这个顺序节点整体返回false,不执行行为。如果返回true,则继续往下判断。如果条件全部true,执行行为节点。
2,选择节点,从上往下,依次判断条件,有一个满足返回true,则跳过接下来所有的条件判断,直接执行行为节点。如果所有的条件节点都返回false,则整个选择节点返回false,不执行行为。
所以攻击节点是这样
1,视野内发现目标,且目标是玩家时,攻击,否则去巡逻或自卫,不执行报复性攻击
2,常规攻击返回true后,即进行了普攻,按照顺序进入报复性攻击的选择条件判断。当,1,发现目标,2,目标是玩家,3,怪物发狂,任一条件满足时,开始疯狂攻击
这个行为树写的有问题,报复性攻击那里的发现目标和目标是玩家应该放在一个顺序里,或者封装成一个发现玩家的条件判断。而且攻击、巡逻、自卫这三个行为也没有写之间的关系。他试图用行为树描述一个AI的行为,却忽略了一些基本规范,大概又自己脑补了一些规则,看起来很蛋疼。
PS:程序都是从上往下一行行执行的,一些概率选择也是让程序在执行顺序上跳过一些节点,严格说是没有所谓的优先级的。你想让一个行为优先出现,是通过把他的条件放到行为树的前端,让程序先去判断他的条件,以实现“一达到条件就执行”的效果
行为树里的顺序节点和选择节点是什么意思?
0 条评论