矩形(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

 

转载于:https://www.cnblogs.com/vilyLei/articles/2059353.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值