Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96271
  • 博文数量: 41
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 486
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-18 20:09
文章分类

全部博文(41)

文章存档

2016年(1)

2015年(1)

2014年(9)

2013年(30)

我的朋友

分类: C/C++

2014-03-03 17:04:01

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

寻路结果如下:


有如下情况,寻路失败,如果地图大的话,需要搜索很久,而且搜索失败,会体验很差,所以要制定一个上限,如最多经过多少时间,或者最多经过多少距离,则算搜索失败。


阅读(902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~