我们现在做的游戏,包括手游,网页游戏,ai部分策划那边的需求并不复杂(待机,巡逻,行走,逃跑,攻击,被击),而且ai需求定了,也不会有太大的改动。所以用状态机是一个不错的选择,因为状态机确实很简单(我们一直都是用状态机)。行为树,实现ai的另外一种方式,先简单介绍一下行为树的概念,然后我们用行为树的方式实现一套简单的ai。
行为树,从名字看肯定是一种树形结构,树的结点可以分为叶子结点和非叶子结点。在行为树中非叶子结点 负责控制ai的逻辑走向,叫做控制结点,叶子结点负责执行逻辑。
控制结点又可以分为以下几种类型:
root:根结点,没有具体的意思,每次计算ai的逻辑需要从它开始, 逐个遍历子结点。
selectNode: 选择结点,有一个子节点返回true,分支就结束,不再遍历。
sequeceNode: 序列结点,有一个子节点返回false,分支就结束,不在遍历。
parallelNode: 并行结点,子节点可以在同一帧中都执行,返回结果由子节点的逻辑决定。
叶子结点分为: