cocos2d-x地圖的應(yīng)用最典型的例子就是塔防類游戲,下面我們就來簡單學(xué)習(xí)一下地圖的應(yīng)用吧!
創(chuàng)新互聯(lián)公司是一家專業(yè)提供萬榮企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為萬榮眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。我們應(yīng)用的地圖編輯軟件是Tiled,一款免費(fèi)的軟件,首先是文件->新文件,然后地圖->新圖塊導(dǎo)入圖片資源,然后就可以在地圖上繪制。
Tiled有四種方式可以編輯瓷磚地圖,菜單位于軟件界面的右上角。
Stamp Brush(快捷鍵 B),可以把當(dāng)前從瓷磚集中選擇的瓷磚畫在地圖上;
Bucket Fill(快捷鍵 F),可以填充空白區(qū)域或者由相同瓷磚連接起來的區(qū) 域;
Eraser(快捷鍵 E),用于擦掉瓷磚;
Rectangular Select(快捷鍵 R), 你可以選擇一個(gè)區(qū)域,然后用Ctrl+c或者菜單項(xiàng)Edit > Copy來復(fù)制選中的區(qū)域, 接著Ctrl+v或者菜單項(xiàng)Edit > Paste粘貼到當(dāng)前鼠標(biāo)在地圖上所處的位置 – 在實(shí)際使用中你會看到,其實(shí)在粘貼時(shí),軟件是自動(dòng)卻換到了Stamp Brush模式 進(jìn)行粘貼的。還有個(gè)小技巧,如果想清除當(dāng)前的瓷磚選擇,只要鼠標(biāo)右鍵點(diǎn)擊一下就可以了。
一個(gè)圖層上面不得使用兩個(gè)圖片上的資源,不然后面調(diào)用的代碼編譯會報(bào)錯(cuò);
其次就是將圖片資源和生成的tmx文件要保持在同級路徑下,不然后面代碼也會報(bào)錯(cuò),當(dāng)然也可以修改tmx下的圖片資源路徑來解決問題。
1.點(diǎn)擊屏幕獲取坐標(biāo)點(diǎn)
bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { CCPoint point = this->tilePosFromLocation(pTouch->getLocation(), (CCTMXTiledMap *)this->getChildByTag(1)); CCLog("%f,%f",point.x,point.y); return true; } CCPoint HelloWorld:: tilePosFromLocation(CCPoint location,CCTMXTiledMap *tileMap) { //pos是地圖上的坐標(biāo),當(dāng)前屏幕的坐標(biāo)+地圖的偏移量 CCPoint pos = ccpSub(location, tileMap->getPosition()); pos.x = (int)(pos.x / tileMap->getTileSize().width); //(地圖總塊數(shù)*每塊的像素 - 現(xiàn)在的y坐標(biāo))/ 每塊的像素 //getMapSize().height是地圖高度的瓷磚數(shù) pos.y = (int)(((tileMap->getMapSize().height * tileMap->getTileSize().height - pos.y)) / tileMap->getTileSize().height); CCLog("%f,%f",pos.x,pos.y); return pos; }
//獲取瓷磚的屬性 CCPoint playerindex = ccp(a,b); //根據(jù)坐標(biāo)點(diǎn)獲取GID int tiledid = layer->tileGIDAt(playerindex); if (tiledid > 0) { //根據(jù)GID獲取指定瓷磚塊的屬性 CCDictionary *tiledic = (CCDictionary *)tileMap->propertiesForGID(tiledid); //判斷瓷磚塊是否有屬性,如果有就用它的屬性,如果沒有 if (tiledic) { CCString * value = (CCString *)tiledic->objectForKey("isTree"); int va = value->intValue(); if (va == 1) { CCLog("這是一棵樹"); } } else { CCLog("該瓷磚快沒有屬性"); } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。