1,使用Tiled map editor 编辑器制作地图完成以后,到处tmx格式文件和图片放入resources里面
2,auto a=CCTMXTiledMap::create("map01.tmx");
this->addChild(a);
添加成功
貌似很简单
编辑瓦片地图对象的时候有对象名称还有对象值
TMXObjectGroup* group = _tileMap ->getObjectGroup("objects"); 通过对象层名获得层中对象组集合。
ValueMap spawnPoint = group->getObject("sp"); 在对象组集合中通过对象名获取单个对面
float x = spawnPoint["x"].asFloat();
float y = spawnPoint["y"].asFloat();
瓦片分类
1,直角地图
直角地图,如图所示是使用方形瓦片构建,看上去是垂直向下观察的鸟瞰图,构成瓦片地图的瓦片不一定是正方形,也可以是长方形瓦片。
2,斜角地图
斜角地图,如图所示是使用菱形瓦片构建。斜角地图是将视角旋转到45度,斜角地图能够使我们的大脑错误地认为,我们是在三维游戏世界中。在早期的电子游戏中由于硬件性能所限制,很多游戏采用斜角地图模拟三维游戏。但是现在运行三维游戏已经不是问题,所有现在我们一般不推荐使用斜角地图。
3,六边形地图
他是有六边形组成的
瓦片地图的概念
1,层
2,瓦片
整个地图都是有一些很小的瓦片构成的
3,瓦片地图坐标
4、全局标识
瓦片地图中的每一个瓦片都拥有一个唯一的编号全局标识(Global IDentifier,缩写GID),用于在地图中查找某个瓦片。全局标识是从1开始的,如果为0,则说明瓦片为空,我们可以利用全局标识来判断某个坐标下是否存在瓦片。
瓦片地图中的每一个瓦片都拥有一个唯一的编号全局标识(Global IDentifier,缩写GID),用于在地图中查找某个瓦片。全局标识是从1开始的,如果为0,则说明瓦片为空,我们可以利用全局标识来判断某个坐标下是否存在瓦片。
Cocos2d-x中瓦片地图API
为了访问瓦片地图,Cocos2d-x中访问瓦片地图API,主要的类有:TMXTiledMap、TMXLayer和TMXObjectGroup等。
1、TMXTiledMap
TMXTiledMap是瓦片地图类,它的类图如图所示,TMXTiledMap派生自Node类,具有Node特点。
TMXTiledMap类图
TMXTiledMap常用的函数如下:
TMXLayer* getLayer(const std::string &layerName)。通过层名获得层对象。
TMXObjectGroup* getObjectGroup(const std::string &groupName)。通过对象层名获得层中对象组集合。
Size& getMapSize()。获得地图的尺寸,它的单位是瓦片。
Size& getTileSize()。获得瓦片尺寸,它的单位是像素。
示例代码如下:
TMXObjectGroup* group = _tileMap->getObjectGroup("Objects");
TMXLayer* background = _tileMap->getLayer("Background");
其中_tileMap是瓦片地图类。
2、TMXLayer
TMXLayer是地图层类,它的类图如图所示,TMXLayer也派生自Node类,也具有Node特点。同时TMXLayer也派生自SpriteBatchNode类,所有TMXLayer对象具有批量渲染的能力,瓦片地图层就是由大量重复的图片构成,它们需要渲染提高性能。
TMXObjectGroup常用的函数如下:
Value getProperty(const std::string &propertyName)。通过属性名获得属性值。
ValueMap getObject(const std::string &objectName)。通过对象名获得对象信息。
ValueMap getProperties()。获得对象的属性。
ValueVector getObjects()。获得所有对象。
ValueVector类型的别名是std::vector<Value>,vector是C++的容器类,它能够存放任意类型的动态数组,std是命名空间。
ValueMap类型的别名是std::unordered_map<std::string,Value>,unordered_map也是C++的容器类,它是一种无序的map类型,map是“键-值”对类型。
为了访问瓦片地图,Cocos2d-x中访问瓦片地图API,主要的类有:TMXTiledMap、TMXLayer和TMXObjectGroup等。
1、TMXTiledMap
TMXTiledMap是瓦片地图类,它的类图如图所示,TMXTiledMap派生自Node类,具有Node特点。
TMXTiledMap类图
TMXTiledMap常用的函数如下:
TMXLayer* getLayer(const std::string &layerName)。通过层名获得层对象。
TMXObjectGroup* getObjectGroup(const std::string &groupName)。通过对象层名获得层中对象组集合。
Size& getMapSize()。获得地图的尺寸,它的单位是瓦片。
Size& getTileSize()。获得瓦片尺寸,它的单位是像素。
示例代码如下:
TMXObjectGroup* group = _tileMap->getObjectGroup("Objects");
TMXLayer* background = _tileMap->getLayer("Background");
其中_tileMap是瓦片地图类。
2、TMXLayer
TMXLayer是地图层类,它的类图如图所示,TMXLayer也派生自Node类,也具有Node特点。同时TMXLayer也派生自SpriteBatchNode类,所有TMXLayer对象具有批量渲染的能力,瓦片地图层就是由大量重复的图片构成,它们需要渲染提高性能。
TMXLayer类图
TMXLayer常用的函数如下:
std::string& getLayerName()。获得层名。
Size& getLayerSize()。获得层尺寸,它的单位是瓦片。
Size& getMapTileSize()。获得瓦片尺寸,它的单位是像素。
Point getPositionAt(const Point& tileCoordinate) 。通过瓦片坐标获得像素坐标,瓦片坐标y轴方向与像素坐标y轴方向相反。
int getTileGIDAt(const Point& tileCoordinate)。通过瓦片坐标获得GID值。
3、TMXObjectGroup
TMXObjectGroup是对象层中的对象组集合,它的类图如图11-17所示,注意TMXObjectGroup与TMXLayer不同,TMXObjectGroup不是派生自Node,不具有Node特性。
TMXObjectGroup类图
TMXLayer常用的函数如下:
std::string& getLayerName()。获得层名。
Size& getLayerSize()。获得层尺寸,它的单位是瓦片。
Size& getMapTileSize()。获得瓦片尺寸,它的单位是像素。
Point getPositionAt(const Point& tileCoordinate) 。通过瓦片坐标获得像素坐标,瓦片坐标y轴方向与像素坐标y轴方向相反。
int getTileGIDAt(const Point& tileCoordinate)。通过瓦片坐标获得GID值。
3、TMXObjectGroup
TMXObjectGroup是对象层中的对象组集合,它的类图如图11-17所示,注意TMXObjectGroup与TMXLayer不同,TMXObjectGroup不是派生自Node,不具有Node特性。
TMXObjectGroup常用的函数如下:
Value getProperty(const std::string &propertyName)。通过属性名获得属性值。
ValueMap getObject(const std::string &objectName)。通过对象名获得对象信息。
ValueMap getProperties()。获得对象的属性。
ValueVector getObjects()。获得所有对象。
ValueVector类型的别名是std::vector<Value>,vector是C++的容器类,它能够存放任意类型的动态数组,std是命名空间。
ValueMap类型的别名是std::unordered_map<std::string,Value>,unordered_map也是C++的容器类,它是一种无序的map类型,map是“键-值”对类型。
提示 Value是Cocos2d-x中泛型类,它可以表示unsigned char、int、float、double、bool、std::string、ValueVector、ValueMap和ValueMapIntKey等数据类型。
转载自http://blog.csdn.net/tonny_guan/article/details/39324041