添加對(duì)象層 這里就會(huì)出現(xiàn)一個(gè)新的對(duì)象..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分)

發(fā)布時(shí)間:2020-06-10 09:45:43 來(lái)源:網(wǎng)絡(luò) 閱讀:3804 作者:lovegame911 欄目:游戲開(kāi)發(fā)

之前三篇地圖主要講的都是地圖繪制有關(guān)的部分,這一篇就講一講如果添加對(duì)象層,以及如何處理對(duì)象層的信息

我們點(diǎn)擊 圖層->添加對(duì)象層

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分)

這里就會(huì)出現(xiàn)一個(gè)新的對(duì)象層,區(qū)別于圖層,用紫色標(biāo)記

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分)

同樣的,我們更改下名字,變?yōu)?ldquo;object0”

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分)

光加了層沒(méi)用,我們還得在層上標(biāo)記具體的對(duì)象

下面我們把光標(biāo)點(diǎn)中“object0”對(duì)象層

我們可以看見(jiàn)工具欄有了變化

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分)

前面與圖層有關(guān)的按鈕變?yōu)榱嘶疑?,后面與對(duì)象層有關(guān)的按鈕變亮了

點(diǎn)擊 “插入對(duì)象”

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分) 按鈕

然后我們用鼠標(biāo)在地圖上拖出一個(gè)框來(lái),格子數(shù)多少可以自由決定

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分) ,不過(guò)一般我們就使用一格就好了,

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分) 按住右下角的小正方形可以拖拉改變格子的大小

下面我們給對(duì)象添加屬性

右鍵點(diǎn)擊對(duì)象,彈出下框

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分) 

點(diǎn)擊對(duì)象屬性

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分)

這里上面第一排的名稱(chēng)是方便在編輯器查看用的,因此最上面的“名稱(chēng)”和類(lèi)型處不填也可以。

下面我們加一個(gè)新的屬性,命名為playerBorn吧,表示游戲人物主角的出生地

值可以指定為1,下面再定義個(gè)Hp的屬性,值寫(xiě)個(gè)100,表示主角出生血量為100

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分)

確定保存,之后加入到我們的游戲工程目錄下

第二步:讀取屬性信息

 

  1. CCTMXObjectGroup* group = map->objectGroupName("object0");//第一步,獲取對(duì)象層  
  2. CCArray* objects = group->getObjects();//獲取層上對(duì)象集合  
  3. CCDictionary* dict = NULL;  
  4. CCObject* pObj = NULL;  
  5. CCARRAY_FOREACH(objects, pObj)//遍歷對(duì)象集合中的對(duì)象  
  6. {  
  7.      dict = (CCDictionary*)pObj;//  
  8.      if(!dict)  
  9.     break;  
  10.      const char* key = "playerBorn";//設(shè)定關(guān)鍵字,對(duì)應(yīng)我們的"playerBorn"  
  11.      CCString *str = (CCString*)dict->objectForKey(key);  
  12.      if(str)  
  13.      {  
  14.          key = "x";  
  15.     float x = ((CCString*)dict->objectForKey(key))->floatValue();//獲取對(duì)應(yīng)對(duì)象的x坐標(biāo)  
  16.     key = "y";  
  17.     float y = ((CCString*)dict->objectForKey(key))->floatValue();//獲取對(duì)應(yīng)對(duì)象的y坐標(biāo)  
  18.     player->setPosition(ccp(x,y));//這里player是我們的主角sprite對(duì)象,設(shè)置坐標(biāo)位置  
  19.           key = "hp";  
  20.          int Hp = ((CCString*)dict->objectForKey(key))->intValue();//獲得主角血量100  
  21.          player->setHp(Hp);  
  22.           break;//找到過(guò)后,退出循環(huán)  
  23.      }  

 這里有個(gè)地方大家要注意,在編輯器上,我們的x,y屬性中的值是格子數(shù),

比如

手把手教你在cocos2d-x中使用TileMap地圖編輯器(對(duì)象層部分) 這里,x是15,y是16,表示的是這個(gè)對(duì)象在地圖的16行15列的格子上,

但是在cocos2d-x中用讀取出來(lái)的就不是15,16了,而是自動(dòng)乘過(guò)塊大小后在地圖上的像素值了,所以這就是為什么我設(shè)置主角setPosition的時(shí)候,直接用的轉(zhuǎn)換后的,xy值,而沒(méi)有再用他們?nèi)コ艘詔ile塊的寬高的原因

基本使用就是這樣了,下一篇教大家如何處理斜45度角的地圖。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI