对AI需求的三种基本能力:
(根据游戏种类和需求进行细化或增删)
运动层:导航+寻路,决定角色的移动路径,具体的移动行为需要动画层的配合(有许多行为可以直接由动画层处理)。运动层包含的算法能够把上层做出的决策转化为运动。
决策层:决定角色在下一时间步该做什么。
战略层:一组角色的总体行为,团队协作时用。小组中的每个角色可以有它们自己的决策层和运动算法,但总体上,它们的决策层会受到团队战略的影响。
FPS(第一人称视角射击游戏):以玩家的主观视角来进行射击的游戏。
TPS(第三人称视角射击游戏):玩家控制的游戏人物在屏幕上是可见的,更加强调动作感。
运动层:确定角色如何在游戏世界中移动。(寻最优路)
决策层:确定角色当前目标、命令、状态和当前目的地,并与其他层通信,使角色协调地运动到一个指定的目标地点。(决定AI的执行行为)
战斗控制器:
操控行为:操作控制角色,让它们能以模拟真实的方式在游戏世界中移动。
它的工作方式是通过产生一定大小和方向的操控力,使角色以某种方式运动。
基本行为中的每一个行为,都产生相应的操控力,将这些操控力以一定的方式组合起来(将基本行为进行不同组合),就能够得到更复杂的“行为”,从而实现更为高级的目标。
无论群体中有多少个体,对于每个个体,计算复杂性有限,通过这种简单计算,可以产生逼真效果。
(两个相似的鸟群,即使是飞过相同的路线,行为也是不同的)
缺点:可能会出现无法预测的行为,在使用时许多参数需要通过实验调整。
是Vehicle的派生类,能真正控制AI角色的移动。(包括计算每次移动的距离,播放动画等)
是所有操控行为的基类,包含操控行为共有的变量和方法。
(操控AI角色的寻找、逃跑、追逐、躲避、徘徊、分离、队列、聚集等都可由此派生)
靠近:指定一个目标位置,根据当前的运动速度向量,返回一个操控AI角色到达该目标位置的“操控力”,使AI角色自动向该位置移动。
离开:与前者正好相反,产生一个操控AI角色离开目标的力。
小三角:AI角色
预期速度:从AI角色的当前位置到目标位置的向量
操控向量:预期速度与AI角色当前速度的差(大小随当前位置变化而变化)
AI角色减速并停到目标位置,避免冲过目标。
当角色在停止半径之外,以最大速度移动。
当角色进入停止半径之内,逐渐减小预期速度,直到为0。
追逐:与靠近行为很相似,只是目标由静止不动变为可移动角色。
预测猎物的未来位置,然后向着未来位置的方向追去,才能在最短时间内追上猎物。
实现:
一些情况下,追逐可能会提前结束。
例如,如果逃避者在前面,几乎面对追逐者,那么追逐者应该直接向逃避者当前位置移动。
二者之间的关系可以通过计算逃避者朝向向量与AI角色朝向向量的点积得到。
逃避:使猎物躲避捕猎者。
(比如鹿被狼追逐,鹿要不断变换逃跑方向,试图逃离狼预测的追逐方向)
在游戏场景中随机放置目标,让角色靠近目标。如果每隔一定时间就改变目标的位置,这样角色就永远靠近目标而又不能到达目标(即使到达,目标也会再次移动)。
But角色有时会突然掉头,因为目标移动到了它的后面。
产生一个操控力,使AI角色沿着预先设置的轨迹,构成路径的一系列路点移动。
最简单的跟随路径方式:
将当前路点设置为路点列表中的第1个路点,用靠近行为产生操控力来靠近这个路点,直到非常接近这个点;
然后寻找下一个路点,设置为当前路点,再次接近它。
重复这样的过程直到到达路点列表中的最后一个路点,再根据需要决定是回到第一个路点还是停止在这最后一个路点上。
在实现路径跟随行为时,需要设置一个“路点半径”参数(会引起路径形状的变化)。
即当AI角色距离当前路点多远时,可以认为它已经到达当前路点,从而继续向下一个路点前进。
操控AI角色避开路上的障碍物。
当AI角色的行进路线上发现比较近的障碍时,产生一个“排斥力”,使AI角色远离这个障碍物。
当前方发现多个障碍物时,只产生躲避最近的障碍物的操控力。
分析步骤: