Cocos2d-x 使用Tiled Map地图

开发环境:cocos2d-x 3.9 +VS2013专业版 Update5

需要注意一个问题:Tiled地图 需要设置为Base64(gzip压缩的格式),这个我调试了很久..

关键代码:(在init()里面)

	TMXTiledMap* tiledmap = TMXTiledMap::create("untitled.tmx");
	this->addChild(tiledmap, 1);

完整代码:

HelloworldScene.cpp

#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);
 
    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();

    /
    
    auto closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    
	closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));

    auto menu = Menu::create(closeItem, NULL);
    menu->setPosition(Vec2::ZERO);
    this->addChild(menu, 1);

    
    auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
    
    // position the label on the center of the screen
    label->setPosition(Vec2(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - label->getContentSize().height));

    // add the label as a child to this layer
    this->addChild(label, 1);



	//地图
	TMXTiledMap* tiledmap = TMXTiledMap::create("untitled.tmx");
 	//auto layer1=tiledmap->getLayer("layer1");
	//if (!layer1)
	//{
		//layer1->setPosition(Vec2::ZERO);
	this->addChild(tiledmap, 1);
	//}
	 
    return true;
}


void HelloWorld::menuCloseCallback(Ref* pSender)
{
    Director::getInstance()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}

Tiled截图:

Cocos2d-x 使用Tiled Map地图_第1张图片

版本:

Cocos2d-x 使用Tiled Map地图_第2张图片

运行结果:

Cocos2d-x 使用Tiled Map地图_第3张图片

你可能感兴趣的:(Cocos2d-x,cocos2d-x,cocos2d,游戏开发,瓦片地图,tiled)