A*寻路网格烘焙(二)

本文探讨了A*寻路算法在游戏场景中的应用,包括如何处理不可通行区域和优化寻路效率。作者提出了使用2D坐标系和斜率概念来确定遇到障碍时的最近可达点,并建议通过增加可能性的方向实现斜角移动。此外,优化路径返回,只返回拐点以减少不必要的移动计算,以提高游戏体验。

图片渲染好了,那么算法的路障就有了,A*寻路我可以把它称为“权重算法”(个人瞎扯),因为整个算法依据是以权重为优先做排序,比如我从A点运动到B点,中间经历的每一个点与B的距离都可以看做权重,我换个角度,如果你的A与B是不通的,那么就会造成一个结果即整个A*的巨大开销(遍历了所有的可行走位置)。

 

好了书归正传,我把整个地图信息渲染成一张图片,蓝黑相间是因为蓝色的RGBA和黑色的RGBA 都有一个值即255(还是扯远了,这个看喜好),如果我点击了蓝色区域内,那么从起点就会走到蓝色区域内的某个终点,但是问题来了,假如我点到黑色或者点到白色区域(无地图区域)怎么办?

这个时候A*定然是没办法返回路径的,因为走不通嘛,那么我们的点击移动通俗来讲会怎么样呢?

参考Moba游戏,如果你点到了防御塔,或者某个英雄大招(墙)比如撼地神牛的封路,你过不去,你会怎么样呢?或者点到地图边界,无法超出地图,卡视野等等。

那就走到离这个终点最近的一个可行走的点。(起点A 终点B  实际运动点C)

那么问题来了,数据可视化一方面是直观,可是放在程序里我总不能遍历这些个点来找距离B 最近的点吧?

而且我觉得也不需要走到最近的点,走到C点就是最完美的解。

这里 我把整个地图看作是一个 2D坐标系,X,Y是像素点,那么引入一个概念:斜率

先贴上返回C点的代码,p1 p2 分别是起点A和终点B。

            var 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值