Cocos2dx-Tiled Map(瓦片地圖)

Tiled Map(瓦片地圖)

Legendof19912014-06-12 14:57:282434 次閱讀

Tiled Map(瓦片地圖)編輯器的使用,詳見:http://blog.csdn.net/legendof1991/article/details/22289857

1. TMX瓦片地圖格式


cocos2d-x支持Tiled所創建的地圖文件(TMX)。


2. 地圖定向(Orientation)

Orthogonal maps 直角鳥瞰地圖(90°地圖) 
Isometric maps 等距斜視地圖(斜45°地圖) 
Hexagonal maps 六邊形地圖(左右或上下邊界的六邊形地圖不被Tiled支持)


3. 地圖形式(Tiles)

被嵌套的瓦片地圖不被支持(如 使用瓦片素材組與其他圖片)
僅支持封裝瓦片地圖組(僅有瓦片素材組被導入地圖文件)
每個Layer最多支持1套瓦片素材組。


4. 地圖層(Layers)

Tiles中Layer的數量沒有上限。
每一個Layer可以被CCTMXLayer類表示( 爲CCSpriteSheet的子類)
每一個單一的瓦片被CCSprite表示(父節點爲CCTMXLayer)


5. 對象組(Object Groups)

瓦片地圖支持對象組


6. 座標(Coordinates)和全局標識(GIDS)

(1)座標

64*32的Tiled瓦片地圖文件的座標系統爲:

(0,0):左上角

(63,31):右下角


(2)全局標識(GIDS)

瓦片的GID是一個全局標識量,它的範圍從正整數1開始,到瓦片地圖中的tile的總量。


如果你的地圖中有5個不同的瓦片,那麼:

瓦片0的GID爲1

瓦片1的GID爲2

瓦片2的GID爲3

以此類推


如果瓦片的GID爲0,表示該瓦片爲空。


(3)建立一個TMX節點

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// create a TMX map
CCTMXTiledMap *map = CCTMXTiledMap::create("TileMaps/iso-test-vertexz.tmx");
 
addChild(map, 0, kTagTileMap);
 
// All the tiles by default will be aliased. If you want to create anti-alias tiles, you should do:
 
// iterate over all the "layers" (atlas sprite managers)
 
// and set them as 'antialias'
 
CCArray * pChildrenArray = map->getChildren();
 
CCSpriteBatchNode* child = NULL;
 
CCObject* pObject = NULL;
 
CCARRAY_FOREACH(pChildrenArray, pObject)
{
        child = (CCSpriteBatchNode*)pObject;
 
        if(!child)
            break;
 
        child->getTexture()->setAntiAliasTexParameters();
}

(4)獲取/添加/刪除/修改一個瓦片

指定座標獲取Tile:

1
2
3
CCTMXLayer* layer=map->layerNamed("Layer 0");
 
CCSprite* tile0=layer->tileAt(ccp(1,63));

指定座標獲取GID:
1
unsigned int m_gid=layer->tileGIDAt(ccp(0,63));

指定座標設置一個新的GID
1
2
3
layer->setTileGID(m_gid,ccp((float)3,(float)3);
// To remove a tile at a certain coordinate
layer->removeTileAt(ccp(5.0,5.0));

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