cocos2d-x使用地圖編輯器的類(cocos2d-x學習)

cocos2d-x支持使用Tiled地圖編輯器創建TMX格式的地圖

官網下載地址

下載完成之後,直接安裝完成。

怎麼使用地圖編輯器,參考官網文檔。


一、現在怎麼把Tiled地圖加載到cocos2d-x的場景中

在.h文件添加一下成員變量

private:

Sprite* m_rSprite 
TMXTiledMap* m_gGameMap; //
void initMap(); //地圖初始化

在.cpp文件做如下操作

bool GameFatherLayer::init()
{
if ( !Layer::init() )
{
return false;
}

initMap();


return ture;

}

void GameFatherLayer::initMap()
{
m_gGameMap = TMXTiledMap::create("tile.tmx");
m_gGameMap->setPosition(Vec2::ZERO);
this->addChild(m_gGameMap);
}

在這裏我們調用的是TMXTiledMap類的靜態方法把我們創建的地圖加載到我們的遊戲場景裏。

TMXTileMap類是繼承自Node類,所以他有Node類的屬性,下面我們看TMXTiledMap的一些常用的方法:

1、TMXLayer* getLayer(const std::string  & LayerName); //通過層名獲得層對象

2、TMXObjectGroup* getObjectGroup(const std:: &groupName); //通過層名獲得層中對象組集合

3、Size& getMapSize(); //獲得地圖尺寸,他的單位是瓦片

4、Size& getTileSize() //獲得瓦片的尺寸,他的單位是像素

二、把Tiled地圖的對象層role座標在遊戲裏使用

void GameFatherLayer::extraInit()
{
TMXObjectGroup* group = m_gGameMap ->getObjectGroup("obj");
auto valueMap = group->getObject("role");
float x = valueMap.at("x").asFloat();
float y = valueMap.at("y").asFloat();
m_rSprite = Sprite::create("hero.png");
m_rSprite->setPosition(Vec2(x,y));
m_rSprite->setAnchorPoint(Vec2::ZERO);
m_gGameMap ->addChild(m_rSprite,ROLE_ZORDER);

}

注意我們通過getObjectGroup方法來獲得對象層,它返回一個特殊的TMXObjectGroup對象。

然後我們調用TMXObjectGroup的方法來獲取一個ValueMap,這Map裏包含了關於對象的大量信息,包括我們上面用的x和y的座標值,還有寬度和高度等,如果我們是設置位置的話我們只要關心x和y就行了。

TMXObjectGroup並不是繼承Node類這是要注意的,下面我們看TMXObjectGroup的一些常用的方法:

1.Value getProperty(const std::string &PropertyName); //通過屬性名獲得屬性值

2.ValueMap getObject(const std::String &ObjectName); //通過對象層獲得對象信息

3.ValueMap getProperties() //獲得對象屬性

4.ValueVector getObjects() //獲得所有對象



發佈了29 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章