矩形(tile)游戏地图中的直线寻路

一般在矩形(tile)游戏地图中,要从A点走到B点,这就要寻路,一般都用A*算法来产生路径。

但是如果A点和B点之间没有障碍物,又刚好不是A*所能接受的直线,那么游戏角色所走的路径就很怪了。因此需要在使用A*寻路前,使用直线寻路来判定是否起点和终点间没有障碍,如果可以直接通过,那就不用A*寻路而直接沿直线走过去就可以了。

那么如何实现直线寻路呢?实际就是判定 A点和B点之间是否有障碍了。

这个过程大有文章可做。如果弄得不好会很耗cpu,办法有很多,我这里的做法是拟合直线的反向操作来实现直线寻路

方法大致是: 从A点向B点画一条线, 然后找到和这条线相交的所有格子。

如何找到这些格子呢?如下图:

 

通过在A和B之间生成连续的矩形,而每一个矩形都能确定若干格子,这样的话,就得到这些格子了。如果这个路径中某个格子有障碍物,那么

 A到B就是走不通的需要借助A*寻路来获取路径,反之可以沿A到B的直线走动。

flash演示如下:

http://vilylei.purpgame.com/test/rectmap/RectMap.html 

 源码下载:


http://vilylei.purpgame.com/test/rectmap/RectMap.rar

 

posted @ 2011-05-26 23:39  vily_雷  阅读(812)  评论(0编辑  收藏  举报