Cocos2d-x學習(十八):Tiled妙用

Tiled是一款很優秀的地圖編輯器,一般可以用在90°,45°角的2D遊戲地圖,並且被很多引擎支持,包括cocos2d,AndEngine等等!

當拋開這種傳統的用法,在朋友的介紹下,我發現了一種好玩的用法:編輯橫版遊戲的道具!其實歸根結底還是編輯地圖!上圖顯示!

(密集綜合症的網友請謹慎看圖!)


不知道各位從中可以想象到什麼用途,反正我想到了jetpack的關卡設計


在cocos2d中使用tmx地圖非常簡單,因爲引擎爲我們提供瞭解析tmx格式文件的接口!(Tiled的用法網上有很多介紹,就不廢話了!)

今天主要記錄一下關於道具對象的用法!也很簡單!原理就是講tmx中的對象數據解析爲遊戲中的某種精靈,我們可以通過tmx的數據,指定道具精靈的一些熟悉,有了這個工具,程序只需要負責解析數據,策劃來負責遊戲的設計就ok了!


具體步驟:

1.讀取tmx格式文件

CCTMXTiledMap *tmxMap = CCTMXTiledMap::create("level1.tmx");

2.獲取文件中指定對象層的數據(我這裏編輯的對象層的名字就叫"daoju")

CCTMXObjectGroup *objectGroup = tmxMap->objectGroupNamed("daoju");

這樣我們就可以獲取這個對象層上的對象了,引擎提供的接口是返回CCArray指針

CCArray *objects = objectGroup->getObjects();

上面簡單的幾行代碼,就實現了對於數據的讀取(具體讀取步驟可以看cocos2d實現源碼)

3.最後一步就是對於對象數據的簡單解析了(我們可能對於策劃定義的不同類型的道具由不同的道具精靈來實現)

cocos2d將對象信息都以鍵值對的形式保存在CCDictionary裏了!(1.0版本和2.0版本略有不同!)

(1)獲取指定名字的對象數據(我這裏假設道具就是加血的,所以叫"HP")

if (((CCString*) dict->objectForKey("name"))->isEqual(&CCString("HP")))

(2)最重要的應該是對象的座標信息了!

int x = 0;
int y = 0;
x = ((CCString*) dict->objectForKey("x"))->intValue();
y = ((CCString*) dict->objectForKey("y"))->intValue();

(3)當我們提取到我們想要的數據,就可以用精靈來具體顯示和實現功能了

sprite = CCSprite::create("CloseNormal.png");
sprite->setPosition(CCPointMake(x, y));
this->addChild(sprite);


OK,就是這麼簡單!只是這種用法確實很巧妙(也可能是我太孤陋寡聞了)!
希望有更好玩的用法的朋友和我交流!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章