Tiled地图编辑器支持普通视角地图和45度角地图, 它生成的地图数据文件cocos2d-x完美的支持,Tiled地图编辑器是一个以普通使用为目标地图编辑器,它使用简单而且能够轻松地在不同的游戏引擎中使用,其特性有:
1、使用基于XML编码形的地图数据文件使用能够在不同游戏引擎中通用
2、支持普通、45度两种视角
3、对象的放置位置能够精确到像素
4、支持图素、层次和对象等通用概念
5、自己主动又一次加载图素集
6、能够重置图素的大不和偏移
7、支持图章刷和填充等高效工具
8、支持以通用的格式输入输出来打开和存储文件
開始Tiled地图编辑器编辑地图
一、首先准备地图素材文件放至projectResources下,下载安装tiled-0.9.1-win32-setup.exe
二、启动Tiled,选择“文件-》新地图”,来新建地图project,弹出例如以下对话框设置地图的大小和图块大小和地图视角方向
三、选择“地图-》新图块”导入图素文件,弹出例如以下对话框设置图块的大小、边距、偏移量及图块名称、源路径
四、图块创建成功,右側显示图层名称及图块窗体中的图块,将图层名改动一下,点击工具栏上图章刷,点击一图块開始画地图
五、在图层窗体加入对象层并重命名,并在对象层加入对象,选中新建的对象层,点击工具栏上“插入矩形”在地图上画一个矩形,大小无关紧要,我们主要用来在地图
获取该x,y坐标,以在此放至精灵,右键刚刚加入矩形,选择对象属性,给它命个名称,然后点击确定。
六、点击保存地图命名*.tmx至Resources
七、编敲代码代码:
CCTMXTiledMap瓦片地图集类是cocos2d-x中支持Tiled地图编码数据文件形式的类,用于解析地图集的数据文件。開始使用地图,增加代码:
执行结果:
八、Cocos2d-x 操作Tiled地图经常用法
显示Tiled地图
获取地图像素大小, width等于地图宽度块数*每块宽度,height 等于地图高度块数*每块高度CCSize CC_UNUSED s = map->getContentSize(); CCLOG("ContentSize: %f, %f", s.width,s.height);
获取地图层
获取对象层
获取对象
获取对象坐标
在坐标处增加精灵
当有多个地图层时,遍历地图层CCArray* pChildrenArray = map->getChildren(); CCSpriteBatchNode* child = NULL; CCObject* pObject = NULL; CCARRAY_FOREACH(pChildrenArray, pObject) { child = (CCSpriteBatchNode*)pObject; if(!child) break; child->getTexture()->setAntiAliasTexParameters(); }
当有对象层有多个对象时,遍历全部对象CCArray *obs = object->getObjects(); CCDictionary *dict=NULL; CCObject *ob = NULL; CCARRAY_FOREACH(obs, ob) { dict = (CCDictionary *)ob; if (!dict) break; int y = ((CCString*)dict->objectForKey("y"))->floatValue(); int x = ((CCString*)dict->objectForKey("x"))->floatValue(); int w = ((CCString*)dict->objectForKey("width"))->floatValue(); int h = ((CCString*)dict->objectForKey("height"))->floatValue(); CCLOG("sprite x: %d, y: %d, w: %d, h: %d", x, y, w, h); }
最后结果图:
普通视角获取地图层四角图素
将精灵作为了节点增加地图中
改动精灵与地图遮挡物关系
//改动z轴的值并排序 CCPoint p = m_tamara->getPosition(); p = CC_POINT_POINTS_TO_PIXELS(p); CCNode *map = getChildByTag(kTagTileMap); int newZ = 4 - (p.y / 48); newZ = max(newZ,0); map->reorderChild(m_tamara, newZ);