上次我们搞了一个C++的AI代码初始化,但是只有C++初始化,AI是不会行动的。这次我们接着初始化之后的步骤,搞一个可以简单巡逻并且发现玩家之后会追踪的简单AI逻辑。
主要逻辑如下:
1.平时按照固定路线巡逻
2.发现玩家之后,追踪玩家
3.拾取玩家视野之后,继续追踪最后一次看见的位置几秒,之后放弃
4.放弃之后,继续按照原路线巡逻
5.如果听到声音,警惕地向声音发生处张望几秒
6.张望之后如果没有发现玩家,继续巡逻
那么要完成这么一个AI逻辑,就需要C++代码、BehaviourTree、Blackboard的共同运作了。我们要知道这三者大概是如何共同运作的:
1.在C++代码中初始化BehaviourTree
2.初始化BehaviourTree之后,游戏每一帧都会进入BehaviourTree并且按照Tree的逻辑把Tree走一遍
3.Tree的走向和许多因素有关,主要与Blackboard之中的AI的“记忆”有关
4.走到相应的Task之后,执行Task,执行了Task,AI就有所行动了
5.在任何时刻C++代码中都在更新着Blackboard之中的字段,这会是Tree每一帧的走向都有所不同,营造出动态多样的AI逻辑
我们先看看AI的BehaviourTree是什么样:
想要看懂AI的BehaviourTree,首先要知道几个node的概念:
1.灰色的node名为comp