为什么80%的码农都做不了架构师?>>>
做像素游戏或者简单的游戏,如果需要用到地图 ,那肯定首选Tiled了,功能强大,小巧简洁,也有利于编程调用一些接口和参数,推荐大家使用。
首先,还是打开软件,选择新文件。
接下来,进入选择界面:
要注意的是,这里的地图大小是按照像素块来设置的,你每一块设置成制作素材的对应大小即可,假如我有48*48的基本素材图片,那么我想做一张480像素的方形地图,就要10*10的地图大小,如上图所示。
设置好后就可以进入编辑了,我们要先添加图块,建议一个良好的习惯:图块用TexturePacker打好包,便于资源管理,也便于使用。(测试用例较简单,省略了打包)
例子导入了一张河流的基本图块,而后导入了沙地的基本图块,大小必须和此处填写的块大小一致,否则会报错无法进行下一步。都设置好后下面就可以进入编辑了。
右侧边栏是我们需要关注和设置的主要部分,现在显示为:
首先,对图层命名,后续编程将用到这些命名来编程,我们给其定名为layer。单击此处可以增加新图层和对象图层:
图层就类似于我们的基本地图,而对象图层是一些可以被调用的接口,比如敌人出兵,或者道具闪现等。我们下面来具体研究这部分。
选中layer层,先制作地图:
在图块部分选中单击选中需要的素材,此时素材被高亮,然后在绘图区单击贴上即可。每一次选中素材可无限次贴上,直到更改下一个素材。这里测试用例就做一副比较丑的水中沙岛。
做好以后,我们要设置对象层。假设这是一款海战游戏,我们在岛的四周设置敌人出生点:新建对象层objectenemy:
然后选中改层,在工具栏点击插入矩形(或你喜欢的任意图形):
在地图上画出一块矩形,大小48*48或近似即可。这里要注意的是对象层要在地图之上,否则会被覆盖看不见。
这里有上移下移的操作,保证所有对像都应该在地图之上。
在地图上拉出几个敌人出生点后,我们还不能调取,因为没有命名,我么选择对象标签页可以进入对象层管理。
在此处对所有对象命名。
绘图区就变成了:
接下来没如法炮制,设置两个道具出身点,地图变成:
相应的三个图层:
现在地图基本就制作完成了,在properties中可以设置课件不可见,以及透明度等,还可以自定义属性。最后保存命名即可。
大家还要注意的是当鼠标在地图上游走时,左下角会显示当前块的tile坐标,以及块的ID:
ID值在做碰撞检测的时候会用到,也可以在图块查看,比如我要看河流的,单击河流图块,然后在properties中有:
这个ID和左下角展示的一致,但是和我们cocos要调用的ID差了1,因此做碰撞检测时候用到的ID=显示的ID+1,这里做河流碰撞检测的话ID就用1,如果看到的是12,那么就要用13,因为Tiled计算ID是从图块开始,按照0,1,2,3的顺序下去的,而空的部分为[empty];但是cocos调用的时候把地图空的部分(无图块填充)置0,其余依次+1处理。用其他引擎的时候也应该注意这块问题,否则可能会有bug发生。
还有,如果游戏需要碰撞检测,那么所有的素材都应该打包。因为不同的图块,ID都是从0开始计算,例如测试用例,water的ID是0,sand的ID也是0,如果把它们打包,当做高48长96的图块导入,那么Tiled就认为水的ID就是0,沙的就成了1,因为我们基础的块大小是48,长96被自动切成了两块,这样一来就有了多个ID。
只要素材丰富,Tiled可以制作各式各样的地图,对于2D游戏来说非常好用,有问题可以在下面留言探讨。