flash游戏设计笔记:区块地图制作(一)
2008-10-27 21:52
465 查看
最近看了一个外国的网站,关于一些rpg地图的做法,其中使用到的一个区块地图做法。这些思想是源于最早开发游戏时候采用到一些方案。使用一些数组来表示图片单元,这样做是为了使地图能够重用,从而达到了减少内存占用。
我们可以640x480把一张地图切割成一小块32x32 的方块,
private var myMap:Array=
[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]];
观察到里面的数组,有一些是1,有一些是0,这些方块每一个数字都可以代表一个小方块。为了能够让我们贴图。我们就要做一些小小的动作。为我们的图片贴上一索引号。假设草地是1,0是砖。那么我们使用一个二维数组来复制这些小小方块来作为我们地图贴片。
public function init(map:Array):void
{
var mapWidth:int=map[0].length;
var mapheight:int=map.length;
for (var i:int = 0; i < mapheight; ++i)
{
for (var j:int = 0; j < mapWidth; ++j)
{
var fa:Fang=new Fang();
addChild(fa);
fa.x=j*Fwidth;
fa.y=i*Fheight;
fa.gotoAndStop(map[i][j]+1);//1就填写一种颜色,0就填写第二种颜色
}
}
我们这里采用了一个二维数组形式来复制我们所需要的地图。可以看到不同的颜色,正好代表了不同的图形模块。所以这种制作地图是一个很不错的思路。它的思想来源于以前制作游戏技术,同样适用于当今一些游戏。
这里采用了var mapWidth:int=map[0].length;//获取了数组的宽度
var mapheight:int=map.length;//获取了数组的高度
然后使用两个循环语句来复制我们所需要的图元模块。
for()
for()
{
}
同样不要忘记了在库链接的添加上Fang
这里只是提供一种关于用数组的形式来构建一些可以重复使用地图的模块的单元 思想。对一些游戏的地图制作技术不只是这样的。希望有兴趣的朋友可以多想想其他方案
下面是效果图:当中是截取了不同的图片,当然数组也要发生一些改变。 其中一些树,比较高一些,我们分两层进行贴,底层铺草地,上一层就铺一些树,同样的做法,效果却有一些改变。是不是觉得好爽呢?如果是的那么就开始动手做自己的flash rpg小游戏吧。至于还有一些小人物,要自己加上去了。这里暂时不多说。
我们可以640x480把一张地图切割成一小块32x32 的方块,
private var myMap:Array=
[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]];
观察到里面的数组,有一些是1,有一些是0,这些方块每一个数字都可以代表一个小方块。为了能够让我们贴图。我们就要做一些小小的动作。为我们的图片贴上一索引号。假设草地是1,0是砖。那么我们使用一个二维数组来复制这些小小方块来作为我们地图贴片。
public function init(map:Array):void
{
var mapWidth:int=map[0].length;
var mapheight:int=map.length;
for (var i:int = 0; i < mapheight; ++i)
{
for (var j:int = 0; j < mapWidth; ++j)
{
var fa:Fang=new Fang();
addChild(fa);
fa.x=j*Fwidth;
fa.y=i*Fheight;
fa.gotoAndStop(map[i][j]+1);//1就填写一种颜色,0就填写第二种颜色
}
}
我们这里采用了一个二维数组形式来复制我们所需要的地图。可以看到不同的颜色,正好代表了不同的图形模块。所以这种制作地图是一个很不错的思路。它的思想来源于以前制作游戏技术,同样适用于当今一些游戏。
这里采用了var mapWidth:int=map[0].length;//获取了数组的宽度
var mapheight:int=map.length;//获取了数组的高度
然后使用两个循环语句来复制我们所需要的图元模块。
for()
for()
{
}
同样不要忘记了在库链接的添加上Fang
这里只是提供一种关于用数组的形式来构建一些可以重复使用地图的模块的单元 思想。对一些游戏的地图制作技术不只是这样的。希望有兴趣的朋友可以多想想其他方案
下面是效果图:当中是截取了不同的图片,当然数组也要发生一些改变。 其中一些树,比较高一些,我们分两层进行贴,底层铺草地,上一层就铺一些树,同样的做法,效果却有一些改变。是不是觉得好爽呢?如果是的那么就开始动手做自己的flash rpg小游戏吧。至于还有一些小人物,要自己加上去了。这里暂时不多说。
相关文章推荐
- flash游戏设计笔记:区块地图制作(一)
- flash游戏设计笔记:区块地图制作(一)
- Flash 游戏设计笔记: 制作炮台
- Flash 游戏设计笔记: 制作炮台
- Flash 游戏设计笔记: 制作炮台
- Flash 游戏设计笔记:计时器制作
- Flash 游戏设计笔记:计时器制作
- Flash 游戏设计笔记:计时器制作
- flash 游戏设计笔记:递归清除bitmapData
- 【Visual C++】游戏开发笔记之九 游戏地图制作(一)平面地图贴图
- 【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作
- 【Unity 3D】学习笔记29:游戏的例子——简单的小制作地图
- 【Visual C++】游戏开发笔记之九 游戏地图制作(一)平面地图贴图
- flash 游戏设计笔记:切割位图技术
- flash 游戏设计笔记:静止复制粘贴(不用TextArea)
- flash 游戏设计笔记:我的工具类(看看有没有你想要的)
- flash 游戏设计笔记:禁止复制粘贴(用TextArea)
- flash 游戏设计笔记:键盘控制
- 【Visual C++】游戏开发笔记之九 游戏地图制作(一)平面地图贴图
- cocos2dx 3D战斗类游戏制作:【四】——一些零散笔记,3D小地图,android surfaceview等