Tiled地图编辑器(一)实现坦克大战

Tiled地图编辑器功能强大、灵活,我认为能实现《坦克大战》游戏的的地图需求。

1.Tiled地图编辑器

其思想为:一个地图由多个层次的图层构成,图层的种类分为三种:块层、对象层和图像层。图层之间的顺序可设置。每种层可以有多个。块层可以看作是地图层,也可看作是物体层。

块层由多种tileset构成,一种tileSet由多个tile构成。比如房屋是一种tileset,而房屋由子部件构成,每个子部件就是一个tile。Tileset和tile的属性都可进行编辑。对于每一种tileset,有多个实例,如何设置每个实例的属性?在对象层上创建对象,每个对象的属性可编辑。图像层则是指地图的背景图像。

其生成的文件为XML格式,结构如下:


属性:地图类型,地图块x方向上的个数.,地图块y方向上的个数.,地图块的宽度,地图块的高度.
子节点有:
properties(属性)
tileset(单元集)
            属性:全局id,图像资源名称,名称,宽度,高度,偏移位置。
            子节点有:
            properties(属性)
            tile (单元)

                       - properties(属性)
            terraintypes (地形)
                     名称,tile (单元的索引)  
layer(块层)
           属性:名称,宽度,高度,透明度,可见
           子节点有:
       properties(属性)
       data(数据) 
          gid:  属性为tile id
objectgroup(对象层)
            属性:名称,宽度,高度,透明度,可见
            子节点有:
        properties(属性)
        object (对象)
                    属性:名称,类型,宽度,高度,地表块的x位置,地表块的y位置 
                     - properties(属性)
        ellipse (椭圆), polygon(多边形), polyline(折线) 
imagelayer(图像层)
             属性:图像资源名称,名称,宽度,高度,透明度,可见。 
             子节点有:
           properties(属性)

  2.坦克大战地图的实现

对于每一张地图,由如下构成:

  • 一个图像层:加载美术做好的的地图图像。
  •  1个地形单元集:属性为“碰撞”,表示是否可通。
  • 多个物体单元集。比如房子、石头。属性有“状态”、“阴影图”等等。
  • 一个块层,表示物体层,放置物体。
  • 一个块层,表示物体效果层,放置物体效果。

 

Tiled地图编辑器也有不好的地方,比如单元集的图不支持动画。

 

3. Tiled 

 如下是一个地图文件的示例:

 version="1.0" orientation="isometric" width="27" height="27" tilewidth="64" tileheight="32">
 firstgid="1" name="房子" tilewidth="64" tileheight="64">
 x="10" y="10"/>
 source="D:/坦克大决战/地图/perspective_walls.png" width="256" height="256"/>
 id="0">
 name="效果图" value="effect.xmp"/>
 firstgid="17" name="地形" tilewidth="64" tileheight="32">
 source="D:/坦克大决战/地图/地形png.png" width="64" height="32"/>
 name="" tile="0">
 name="碰撞" value="true"/>
 id="0" terrain="0,0,0,0"/>
 name="图像图层 1" width="27" height="27">
 source="D:/坦克大决战/地图/11-small.jpg"/>
 name="对象层 1" width="27" height="27">
 gid="1" x="32" y="32">
 name="生命值" value="1"/>


data节点的内容如下:

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(2D游戏)