zoukankan      html  css  js  c++  java
  • 行为树

    行为树

     

    行为树常被用来实现游戏中的AI。每次执行AI ,都会从根节点遍历整个树,父节点执行子节点,子节点执行完后将结果返回父节点。下面是基本的四个节点:

     

    1 *顺序节点(Sequence):属于组合节点,顺序执行子节点,只要碰到一个子节点返回false,则返回false,否则返回true,类似于程序中的逻辑与。
    2 *选择节点(Selector):属于组合节点,顺序执行子节点,只要碰到一个子节点返回true,则返回true,否则返回false,类似于程序中的逻辑或。
    3 *条件节点(Condition):属于叶子节点,判断条件是否成立。
    4 *执行节点(Action):属于叶子节点,执行动作,一般返回true。

     

     

    关于更多关于行为树概念上的东西,大家很容易找到相关的资料,这里不再最赘述,主要是通过一个实际的例子来看行为树在AI上的应用。

     

    这是AI文字表达的方式:

     

     

    如果不是情人节,我们的Avatar将去球场打球,如果是情人节,他将带上一束花去见他的女友,但是他可能没带钱,所以他要先回家拿钱,然后去花店买花,再去 见他的女友,如果女友还在约会地点,则将花送给女友。

     

    下面是用行为树表达的方式:

     

     

    上面的图让我们能很容易指导我们的代码编写,我们需要完成所有的叶子节点,然后将他们按照图示,放到相应的组合节点中去,然后不停的遍历整个行为树。

     

    我使用AS3完成了下面的demo,去实现上图中的行为树AI(如无法观看请下载最新的FlashPlayer)。

     

    Flash中,蓝色的圆表示AI控制的Avatar,你可以通过点击不同选择框来改变当前的条件,Avatar会根据条件做出不同的反应。

    行为树很适合做AI编辑器,我们定义好一些条件和动作,策划人员通过简单的拖拽和设置即可实现复杂的游戏AI。

  • 相关阅读:
    centos7修改时区EDT------CST
    七种可能 | Linux丢包故障的定位与解决
    TCP超时、ping不丢包排查
    JavaScript 判断变量是否为空---三元运算,元组获取值-重组.map()。
    SSH 正、反向代理实现稳定的内网穿透实验_
    V3
    V3
    I4-6 At the hotel Teacher: Maggie
    English Voice of <<Everything I Need >>
    V3
  • 原文地址:https://www.cnblogs.com/VindyLeong/p/4480081.html
Copyright © 2011-2022 走看看