Cocos2d x學習(十八) Tiled妙用

2021-06-11 03:03:25 字數 1891 閱讀 3832

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

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

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

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

在cocos2d中使用tmx地圖非常簡單,因為引擎為我們提供了解析tmx格式檔案的介面!(tiled的用法網上有很多介紹,就不廢話了!)

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

具體步驟:

[cpp]view plain

copy

"font-size:14px;"

>cctmxtiledmap *tmxmap = cctmxtiledmap::create(

"level1.tmx");

[cpp]view plain

copy

"font-size:14px;"

>cctmxobjectgroup *objectgroup = tmxmap->objectgroupnamed(

"daoju");

這樣我們就可以獲取這個物件層上的物件了,引擎提供的介面是返回ccarray指標

[cpp]view plain

copy

"font-size:14px;"

>ccarray *objects = objectgroup->getobjects();  

上面簡單的幾行**,就實現了對於資料的讀取(具體讀取步驟可以看cocos2d實現原始碼)  

cocos2d將物件資訊都以鍵值對的形式儲存在ccdictionary裡了!(1.0版本和2.0版本略有不同!)

[cpp]view plain

copy

"font-size:14px;"

>

if(((ccstring*) dict->objectforkey(

"name"

))->isequal(&ccstring(

"hp"

)))

[cpp]view plain

copy

"font-size:14px;"

>

intx = 0;  

inty = 0;  

x = ((ccstring*) dict->objectforkey("x"

))->intvalue();  

y = ((ccstring*) dict->objectforkey("y"

))->intvalue();

[cpp]view plain

copy

"font-size:14px;"

>sprite = ccsprite::create(

"closenormal.png"

);  

sprite->setposition(ccpointmake(x, y));  

this

->addchild(sprite);  

ok,就是這麼簡單!只是這種用法確實很巧妙(也可能是我太孤陋寡聞了)!  

希望有更好玩的用法的朋友和我交流!  

Cocos2d x學習筆記1

1.建立新的cocos2d x 3.0 專案 在命令列中輸入 cocos new helloworld 專案名稱 p com.ss.pku 包名字 l cpp 專案型別 d d cocos workspace 專案存放路徑 2.資料夾分析 resource 資料夾 存放資源檔案 include和so...

Cocos2d x學習筆記(7)

1 動作基本概念 ccactiong是動作類的基類,動作作用於ccnode,因此,任何乙個動作都需要ccnode物件來執行。ccaction作為乙個基類,其實質是乙個介面 抽象類 由它派生的實現類才是實際使用的動作。ccaction的絕大多數實現類都派生自ccfinitetimeaction,這個類...

Cocos2d x動作學習筆記

action類如其名,它可以改變node物件的屬性,action物件是隨著時間改變node的屬性。任何乙個以node為基類的物件都有可執行的動作物件。例如,你可以在乙個時間段內將sprite精靈從乙個位置移動到另乙個位置。每個動作都有by和to兩個狀態。為什麼呢?因為它們所執行的結果是不同的。by相...