行为树里的顺序节点和选择节点是什么意思?

0 条评论


  • 0

    Kingfeng我们作为一个协会誓要治愈这个世界及其居民

    这个行为树有点乱

    而且『选择』这个完全意味不明,我也没听说有选条件的啊

    动态选择一般是有多个子动作,选第一个配对成功的√


    一个动作有三个状态,成功、失败、运行

    严格按照从上往下忠实执行


    行为树本身不是一个『优先级』的图

    而是『行为』本身

    就用问题中的图来说

    怪物会的动作会直接由『攻击玩家』接管再交给『常规攻击』
    然后常规攻击中『发现目标』如果无法达成,就会返回失败,然后返回攻击玩家

    控制权再交给『报复性攻击』继续执行


    就比如这差不多就是一个『没看见玩家没血的怪被玩家摸屁股然后跑路』的故事

    0e78f71f94f9a93df8301551853207a5.png

    发布于 2017-12-01 18:32:00 0 条评论


  • 2

    明宗做游戏玩游戏

    按照我用过的行为树,说一下这个图里的逻辑。

    1,顺序节点,从上往下,依次判断条件,有一个不满足返回false,这个顺序节点整体返回false,不执行行为。如果返回true,则继续往下判断。如果条件全部true,执行行为节点。

    2,选择节点,从上往下,依次判断条件,有一个满足返回true,则跳过接下来所有的条件判断,直接执行行为节点。如果所有的条件节点都返回false,则整个选择节点返回false,不执行行为。


    所以攻击节点是这样

    1,视野内发现目标,且目标是玩家时,攻击,否则去巡逻或自卫,不执行报复性攻击

    2,常规攻击返回true后,即进行了普攻,按照顺序进入报复性攻击的选择条件判断。当,1,发现目标,2,目标是玩家,3,怪物发狂,任一条件满足时,开始疯狂攻击

    这个行为树写的有问题,报复性攻击那里的发现目标和目标是玩家应该放在一个顺序里,或者封装成一个发现玩家的条件判断。而且攻击、巡逻、自卫这三个行为也没有写之间的关系。他试图用行为树描述一个AI的行为,却忽略了一些基本规范,大概又自己脑补了一些规则,看起来很蛋疼。

    PS:程序都是从上往下一行行执行的,一些概率选择也是让程序在执行顺序上跳过一些节点,严格说是没有所谓的优先级的。你想让一个行为优先出现,是通过把他的条件放到行为树的前端,让程序先去判断他的条件,以实现“一达到条件就执行”的效果

    更新于 2017-04-03 22:08:47 6 条评论


  • 0

    茶叶蛋很疼爱生活,爱独立游戏

    建议看看有限状态自动机?

    题中的这个行为树感觉并不是闭合的

    发布于 2017-03-31 16:54:38 1 条评论 禁止转载


  • 0

    Doom Liang我被折叠的回答,都是精华

    看左上角标注


    顺带这行为树貌似没标明同级权重啊

    发布于 2017-03-31 16:19:43 2 条评论

  • 登录奶牛关账号即可参与讨论