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));
|