TiledMap使用教程

发表于2019-03-20
评论0 5.6k浏览
本篇文章给大家介绍下关于TiledMap的使用教程,并借助一个案例来帮助大家加深了解。

一、打开TiledMap,新建地图:

块大小可结合图片资源来设置,地图大小结合块大小和像素大小来设置。

新建完成后如下,右边默认图层名字为块层1,可更改图层的名字:

图层定义:

用于分隔不同作用的地图元素以方便管理和实现层叠显示。举例跑酷的场景中可以将地面、背景建筑、碰撞物体等分层放置,对于背景只是用来增加画面效果不会用于判断碰撞等事件,墙壁等瓦片图如果不能充满整个图块就会造成颜色不协调(同一个图块位置无法放置两种不同的瓦片图),所以层的出现解决了这个棘手的问题,保证了背景可以存在上面又能用墙壁等瓦片图遮挡显示一部分图片。图层主要放置不会改变的图片,如地面或墙壁等。

二、导入图块资源:

三、图块层布局:

导入之后,就可以直接在右下角选中图块资源,放到图层上布局就可以了,背景布置完毕:

接下来,要加入小鸟、飞船等障碍物,爱心奖励物,可这些在游戏中是动态的,如果直接加入图片就不能动了,所以这些不能直接加入图块层,而是新建对象层:

四、添加对象层:

对象层概念:

主要用于放置NPC、金币、主角、宝箱、障碍物等,该类特点是经常会移动、变换形态、显示或隐藏等。另外对于我们自定义的一些选框、路径等也可以放在此层中。它并不对应于某个地图图片,只是标明了某个位置,这样开发者可以通过相关 API 获取某个对象的位置,从而在相应的位置进行绘制。对象也是可以有名字的,这样可以通过相关 API 通过名字得到对象。

例:新增了4个对象层,在对象层中添加了一些形状的对象,用这些对象来表示该位置上对应的障碍物或奖励品,也就是暂时用这些小方块小圆圈来代替具体的游戏实物。在程序中,我们可以遍历指定对象层上的全部对象,然后再在这些对象的坐标处创建相应的障碍物或奖励品,这样不管是它们是静态的还是动态的,都可以很方便的。这里形状和大小并无太大关系,因为我们在程序中只需要取对象的坐标值。

五、导出文件:

保存,并连同图块资源一起拷贝到项目的res/image目录下,用于游戏加载。注意的是。tmx文件与。png资源默认情况下需要放在同级目录下,如需修改,可以打开。tmx文件修改路径。 对象组(ObjectGroups)中的对象(Object)在TMX文件中以键值对的形式存在,因此我们也可以直接在TMX文件中对它进行修改。

六、游戏加载:
self.map = cc.TMXTiledMap:create("image/test.tmx")
	:align(display.BOTTOM_LEFT, display.left, display.bottom)
	:addTo(self, -1)
self:addBody("heart", Heart)
self:addBody("airship", Airship)
self:addBody("bird", Bird)
function BackgroundLayer:addBody(objectGroupName, class)
    local objects = self.map:getObjectGroup(objectGroupName):getObjects()
    local  dict    = nil
    local  i       = 0
    local  len     = table.getn(objects)
    for i = 0, len-1, 1 do
        dict = objects[i + 1]
        if dict == nil then
            break
        end
        local key = "x"
        local x = dict["x"]
        key = "y"
        local y = dict["y"]
        local sprite = class.new(x, y)
        self.map:addChild(sprite)
        if objectGroupName == "bird" then
            table.insert(self.bird, sprite)
        end
    end
end

游戏运行后,小鸟,爱心,飞船就可以按TiledMap设计好的位置出现了:

以上就是TiledMap的使用教程, 想了解更多内容,可以参考《瓦片地图 Tiled Map

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引