您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx TMX地图

2016-03-07 23:51 393 查看
[code]
    local map = cc.TMXTiledMap:create("map.tmx"):addTo(self);  --加载地图

    local mapProperties = map:getProperties();   --获取地图信息
    print(mapProperties.type);

    local mapLayer = map:getLayer("scene");      --获取图层
    local LayerProperties = mapLayer:getProperties();  --获取图层信息
    print(LayerProperties.type);

    local tilePro = map:getPropertiesForGID(1);    --获取图块信息
    print(tilePro.type);

    local objectGroup = map:getObjectGroup("object");   --获取对象组
    local playerObj = objectGroup:getObject("player");  --从对象组获取对象

    print(playerObj.type);

    local colorObj = objectGroup:getObject("color");  --获取对象
    local colorObjX = math.floor(colorObj.x / 32);
    local colorObjY = math.floor(colorObj.y / 32);
    local colorObjW = math.floor(colorObj.width / 32);
    local colorObjH = math.floor(colorObj.height / 32);

    for x = colorObjX, colorObjX + colorObjW - 1 do
        for y = colorObjY, colorObjY + colorObjH - 1 do
            local sprite = mapLayer:getTileAt(cc.p(x, map:getMapSize().height - y - 1));
            sprite:setColor(cc.c3b(255, 0, 0));  --修改地图颜色
        end
    end

    local player = display.newSprite("c.png"):addTo(self);
    player:pos(playerObj.x, playerObj.y);        --在player处创建一个精灵

    map:setTouchEnabled(true);    --开启地图触摸
    map:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE);
    map:addNodeEventListener(cc.NODE_TOUCH_EVENT, function (event)   --触摸事件回调函数
        if event.name ~= "began" then return true  end  --只处理点击事件

        local point = cc.p(0, 0);

        point.x = math.floor(event.x / 32);    --
        point.y = map:getMapSize().height - math.floor(event.y / 32) - 1;  --将点击坐标转换成瓦片坐标

        local tiled = mapLayer:getTileAt(point);  --获取对应瓦片

        local gid = mapLayer:getTileGIDAt(point);  --获取瓦片GID
        local p = map:getPropertiesForGID(gid);    --通过GID获取信息

        if type(p) == "table" and p.move == "true" then  --判断是否可以移动
            player:pos(tiled:getPosition());
        end

    end);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: