1,制作寻路图(黑白图,此处用bmp格式,一般常用的有tga等其他格式):
-------
2,运行结果:
3,代码和资源:
test1.bmp +
findpath.rar
4,算法:主要是通过路径点来寻路。嘴笨,看别人介绍的:
http://blog.codingnow.com/2008/07/path_finding.html
5,优化曲线。原理:
在路径计算之后,在邻接的地方选择一个节点使得路径更为平滑.
findpath.rar
6,待续.
要考虑实体半径,所以设置路径点的时候,靠近非可行区域的边缘要空出来一些。
要考虑转向,如航海类船只的行走。
7,现在需要一个寻路,用在手游客户端,所以要求内存占有率低,如果一张1600*1600的地图,大小为10M,肯定不行。所以考虑用网格。
先用工具把地图转换成一个数组,16*16的网格来划分,则转换成100*100的int数组,1表示可行走,0表示不可行走,存为文件:map001.path
进入场景的时候,客户端载入该文件到内存,寻路时根据此数组来a星寻路.
寻路编辑器代码(可以参考上面的寻路编辑器,增加曲线优化。):
astar_findpath.rar
寻路结果如下:
有如下情况,寻路失败,如果地图大的话,需要搜索很久,而且搜索失败,会体验很差,所以要制定一个上限,如最多经过多少时间,或者最多经过多少距离,则算搜索失败。
阅读(939) | 评论(0) | 转发(0) |