Tiled Map(瓦片地图)编辑器的使用,详见:http://blog.csdn.net/legendof1991/article/details/22289857
cocos2d-x支持Tiled所创建的地图文件(TMX)。
Orthogonal maps 直角鸟瞰地图(90°地图)
Isometric maps 等距斜视地图(斜45°地图)
Hexagonal maps 六边形地图(左右或上下边界的六边形地图不被Tiled支持)
被嵌套的瓦片地图不被支持(如 使用瓦片素材组与其他图片)
仅支持封装瓦片地图组(仅有瓦片素材组被导入地图文件)
每个Layer最多支持1套瓦片素材组。
Tiles中Layer的数量没有上限。
每一个Layer可以被CCTMXLayer类表示( 为CCSpriteSheet的子类)
每一个单一的瓦片被CCSprite表示(父节点为CCTMXLayer)
瓦片地图支持对象组
64*32的Tiled瓦片地图文件的坐标系统为:
(0,0):左上角
(63,31):右下角
瓦片的GID是一个全局标识量,它的范围从正整数1开始,到瓦片地图中的tile的总量。
如果你的地图中有5个不同的瓦片,那么:
瓦片0的GID为1
瓦片1的GID为2
瓦片2的GID为3
以此类推
如果瓦片的GID为0,表示该瓦片为空。
// 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(); }
指定坐标获取Tile:
CCTMXLayer* layer=map->layerNamed("Layer 0"); CCSprite* tile0=layer->tileAt(ccp(1,63));
unsigned int m_gid=layer->tileGIDAt(ccp(0,63));
layer->setTileGID(m_gid,ccp((float)3,(float)3); // To remove a tile at a certain coordinate layer->removeTileAt(ccp(5.0,5.0));