资源描述
JULY
FLEX GAME
FLEX AS3 做 Flash Game 地图寻路实例
1. 总结目的
在地图中,通过鼠标或者由程序自动运行,让一个人物自动从地图的一点走到另一点。
需要计算两点之间的最优路线,要实现这样的寻路算法。最常规和最简单的方法,使用 A*算
法。本篇总结不具体讲解 A*算法的实现以及原理,主要告诉怎么用。后面的总结中我会陆
续把 A*算法进行详细分析,希望大家学习。
2. 开发流程
2.1.地图加载
1)在寻路过程中, 地图是被分为若干个小格子, 当然,根据格子数量的不同,
路线长度的不同,计算寻路的时间也就不同。
第1页 有问题可加 QQ:268016856 或 邮件:liujia9234@ 共同探讨,共同学习
JULY
FLEX GAME
上面是有一个由 20*20 的地图拼起来的地图,每一个地图块是有 20 像素*20
像素元件做成。
每一个地图块是 2 帧构成,地图帧是人物可以行走的路线,第二帧是障碍物(桌
子) 。上面的地图是路线和障碍物 8 比 2 的概率生成,参考代码:
Block 是地图块元件类。用 Flash cs3 已经做好。
this.mass_x_count 是指地图 X 轴上板块数量
this.mass_y_count 是指地图 Y 轴上板块数量
distancex 是指地图 X 轴离边界 Left 的距离
distancey 是指地图 Y 轴离边界 Top 的距离
aNodeMap 是一个 2 维数组,记录着每一个地图块当前的状态,是障碍物还是
路线。
地图初始化中,根据两个 For 循环嵌套,生成一个表格状的地图。这里我不在
第2页 有问题可加 QQ:268016856 或 邮件:liujia9234@ 共同探讨,共同学习
JULY
FLEX GAME
详细介绍,详细会 AS3 的一定可以看的懂。
2.2.地图上移动人物加载
1)路线寻路肯定要有一个元件在地图上移动,才可以正确的显示出寻路的过程。无论 是一个人物移动或多个人物移动,基本做法相同,下面我们就来加载一个人物物件到地图上
来。
Waiter 是一个移动的任务元件。在这里我们叫"服务员元件"
Timer 是为服务员增加一个 timer 事件,主要目的是为了服务员从一个地图块移动到另一个
地图块,不是跳过去的,而是慢慢的移动过去的。
此方法主要在加载完地图后调用,指定人物加载的 X,Y 坐标,进行加载。
2.3. 选择移动目的地
1)地图和服务员加载完成后,我们需要选择服务员移动的目的地,选择的方式有很多。 举个例子,人人餐厅中客人进来就餐,首先进门后,程序会自动寻找有空位的 X,Y 坐标,
然后计算路线,客人就会沿着路线走进去。同样服务员也会根据客人进来餐厅的循序,以及
客人所做的座椅的坐标进行计算路线,然后走过去服务。
2)由于我们只是一个例子,所以就有我们鼠标确定目的地。
第3页 有问题可加 QQ:268016856 或 邮件:liujia9234@ 共同探讨,共同学习
展开阅读全文