行为树常被用来实现游戏中的AI。每次执行AI ,都会从根节点遍历整个树,父节点执行子节点,子节点执行完后将结果返回父节点。下面是基本的四个节点:
[b]1 、顺序节点(Sequence)[/b]:属于组合节点,顺序执行子节点,只要碰到一个子节点返回false,则返回false,否则返回true,类似于程序中的逻辑与。
[b]2 、选择节点(Selector)[/b]:属于组合节点,顺序执行子节点,只要碰到一个子节点返回true,则返回true,否则返回false,类似于程序中的逻辑或。
[b]3 、条件节点(Condition)[/b]:属于叶子节点,判断条件是否成立。
[b]4 、执行节点(Action)[/b]:属于叶子节点,执行动作,一般返回true。
关于更多关于行为树概念上的东西,大家很容易找到相关的资料,这里不再最赘述,主要是通过一个实际的例子来看行为树在AI上的应用。
这是AI文字表达的方式:
如果不是情人节,我们的Avatar将去球场打球,如果是情人节,他将带上一束花去见他的女友,但是他可能没带钱,所以他要先回家拿钱,然后去花店买花,再去
见他的女友,如果女友还在约会地点,则将花送给女友。
附件图片是用行为树表达的方式:
[img]http://dl2.iteye.com/upload/attachment/0101/9181/62dc21b0-74c9-3587-956d-6ae249748931.jpeg[/img]
附件图让我们能很容易指导我们的代码编写,我们需要完成所有的叶子节点,然后将他们按照图示,放到相应的组合节点中去,然后不停的遍历整个行为树。