游戏AI-5:基本路径寻找及航点应用

寻找路径的问题有很多不同类型。没有一种解决办法可以适用各种类型的路径寻找问题。解决办法和每个游戏特定的路径寻找的需求细节有关。

基本的路径寻找

基本算法

if (positionX > destinationX)
    positionX--;
else if (positionX < destinationX)
    positionX++;

if (positionY > destinationY)
    positionY--;
else if (positionY < destinationY)
    positionY++;

含障碍物的问题

随机移动避开障碍物

if 玩家在视线内

     采用直线路径走向玩家

else

     以随机方向移动

如果玩家在计算机控制的对手的视线内,就采用直线视线路径。如果有障碍物存在,则计算机控制的角色就采用随机方向移动。由于场景中障碍物很少,到下一轮游戏循环时,玩家可能就出现在其视线内了。

绕行障碍物

角色会一直沿着路径走下去,直到碰到障碍物。此时,该角色就会转换成绕行状态(tracing state)。在绕行状态下,该角色会沿着障碍物的边缘路线移动,试着沿路径经过。那么何时停止绕行呢,,即决定何时从绕行状态换回简单的路径寻找状态。

做法之一是算出从开始绕行的点到所需抵达的目的地之间的线段。计算机控制的角色会一直保持在绕行状态,直到与该线相交,到了交点时,就会换回简单路径寻找状态。

另一种做法是在前述的绕行方法内,整合视线算法。基本上,在沿路的每一步,我们都会用视线算法,确认是否可以采用直线的视线路径抵达目的地。

以面包屑寻找路径

可以让角色看起来很聪明,因为玩家在不知不觉间替计算机控制角色建立了路径。每次玩家走一步时,都会毫无所知地在游戏世界中留下看不见的标记或者说面包屑(breadcrumb)。当游戏角色碰到面包屑时,就能凭着面包屑一路走下去。游戏角色会跟着玩家的足迹,直到追上玩家。路径的复杂度以及沿路的障碍物数量根本无关紧要。玩家已经建好路径了,所以,不需要什么大不了的计算。

面包屑方法也是计算机控制角色成群移动的有效方法。你不必让群体中的每个成员,都以费时费力的路径寻找算法找路径,可以直接让成员跟着领头者留下的面包屑走。

遵循路径走

比如让赛车沿着赛道走

沿着墙走

航点导航

路径寻找是一项非常耗时,且耗用CPU资源的运算工作。减少这种困扰的方式之一,就是尽可能预先算好路径。航点导航减少这种困扰的做法就是,认真地在游戏环境中置放节点,然后,使用预先计算好的路径,或者是简单的路径寻找方法在节点之间移动。如下

我们在这里讨论的每种方法都有其优缺点,显然地,没有一种方法可适用所有可能的路径寻找问题。而A*算法,可适用大部分的路径寻找问题,是极为常用的路径寻找算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值