关于地图的东西
你或许会考虑,为什么我要选择这种方式呢?我可以告诉你这是最好的方法。我可以说这个地图格式可以最快地创建地图,可以产生最小的文件。我只能说在和区块游戏大了多年交道之后,我发现这个格式最适合我的需要。但是我们也可以看看其他可能的方法,保存地图数据的方法。
JailBitch的方法
这是原始的OutsideOfSociety的教程所采用的格式,非常简单。他以同样的方式把某个点的帧数字保存到二维数组中。每次你都需要检测下一个方块是不是墙(或者是可以捡起来的东西,或者是门,或者任何东西),你可以从地图数组中查找数字。
 (这里显示的数组并不是全部的,下面还有没有显示出来)
当检测碰撞时,你能够可以让某部分的帧作为墙(或者可拾取的东西,或者门)。例如,你可以让所有的帧数在0到100的方块都作为可通行的方块,所有的从101到200的是墙,大于200的是特殊的方块。
当你只有很少的方块类型,而且方块不会变化很多时,这是一个很好的很简单的方式。
OutsideOfSociety的文章: http://oos.moxiecode.com/tut_01/index.html
沙漠中的树
一些地图具有许多不同的方块,一些只有很少的几种。例如,想象在沙漠中,方圆几百公里都是沙子,如果你很幸运,你可以看到一片绿洲。或者在海上,除了水还是水,然后出现一个海岛。
如果你的地图大部分是相同的方块(沙子),而且只有少量的变化(树),那么二维数组并不是很好的选择。他会产生许多“死信息”,许多行的0,直到一些其他的frame数字出现。在这种情况下,你可以单独声明非沙子的方块,然后让剩下的方块都是沙子。
让我们假设你有一个100×100的地图,有3个树。你可以这样写:
当创建地图的时候,你遍历这个trees数组,放置trees方块,让其他的方块显示沙子。那样比写100×100的二维数组要简单多了。 当然,当你有更多的对象(树、灌木、草、石头、水……),这个方法的速度不是很快,而且你也很难记住什么地方放了什么方块。
S,M,XXXL
如果你有Flash MX或更新版本,估计你已经听到过XML。他的格式和HTML很像,他允许声明许多东西。你也可以用XML来保存你的地图数据。 下面的XML地图基于Jobe Makar的《Macromedia Flash MX Game Design Demystified》。看看这个XML的地图:
<map> <row> <cell type="1"> <cell type="1"> <cell type="1"> </row> <row> <cell type="1"> <cell type="4"> <cell type="1"> </row> <row> <cell type="1"> <cell type="1"> <cell type="1"> </row> </map>
这里我们设定了3×3的地图。首先是头部”map”,然后设置了3个”row” 结点。每个row结点有3个cell结点。
如果从外部文件中载入地图,XML可能是很好的方案,因为大部分的XML解析可以有Flash MX内建的函数完成。从外部文本文件中载入二维数组可没有那么简单,你经常要靠loadVariables得到字符串,然后又不得不把字符串分割成数组,这个过程是很慢的。
XML也有缺点:他会导致更大的文件大小(不过对于现在的网络,这种大小可以忽略),而且你需要Flash Player 6以上。 下面的所有例子都使用二维数组来存储地图数据,而且使用对象的方法来创建方块,就像在“地图的格式”中介绍的那样。
出处:蓝色理想
责任编辑:qhwa
上一页 地图 下一页 创建方块
◎进入论坛Flash专栏版块参加讨论
|