Cocos2d-x Tiled地图编辑器(一)基本使用
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地图编码数据文件形式的类,用于解析地图集的数据文件。開始使用地图,增加代码:
CCTMXTiledMap *pTMXTiledMap = CCTMXTiledMap::create("map.tmx");
pTMXTiledMap->setScale(0.8f);
pTMXTiledMap->setAnchorPoint( ccp(0.5f, 0.5f) );
pTMXTiledMap->setPosition(ccp(visibleSize.width/2 , visibleSize.height/2-300)); this->addChild(pTMXTiledMap);
执行结果:
八、Cocos2d-x 操作Tiled地图经常用法
显示Tiled地图
CCTMXTiledMap *map = CCTMXTiledMap::create("map3.tmx");
map->setAnchorPoint( ccp(0.5f, 0.5f) );
map->setPosition(ccp(visibleSize.width/2, visibleSize.height/2));
this->addChild(map);
获取地图像素大小, width等于地图宽度块数*每块宽度,height 等于地图高度块数*每块高度
CCSize CC_UNUSED s = map->getContentSize();
CCLOG("ContentSize: %f, %f", s.width,s.height);
获取地图层
CCTMXLayer *layer = map->layerNamed("layer1");//參数:地图层名称
CCSize m = layer->getLayerSize();//地图大小
CCLOG("LayerSize: %f, %f", m.width,m.height);
获取对象层
CCTMXObjectGroup *object = map->objectGroupNamed("object1");//參数:对象层名称
获取对象
CCDictionary *sprite_object = object->objectNamed("sprite1");//參数:对象名称
获取对象坐标
float x = ((CCString*)sprite_object->objectForKey("x"))->floatValue();
float y = ((CCString*)sprite_object->objectForKey("y"))->floatValue();
在坐标处增加精灵
CCSprite *sprite = CCSprite::create("sprite.png");
sprite->setScale(0.5f);
sprite->setAnchorPoint(ccp(0.0f, 0.0f));
sprite->setPosition(ccp(x, y));
this->addChild(sprite);
当有多个地图层时,遍历地图层
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);
}
最后结果图:
普通视角获取地图层四角图素
CCTMXLayer *layer = map->layerNamed("layer1") ;
CCSize s = layer->getLayerSize(); CCSprite* sprite;
sprite = layer->tileAt(ccp(0,0));
sprite->setScale(2);
sprite = layer->tileAt(ccp(s.width-1,0));
sprite->setScale(2);
sprite = layer->tileAt(ccp(0,s.height-1));
sprite->setScale(2);
sprite = layer->tileAt(ccp(s.width-1,s.height-1));
sprite->setScale(2);
将精灵作为了节点增加地图中
m_tamara = CCSprite::create("nan.png");
map->addChild(m_tamara, map->getChildren()->count() );//将精灵作为子节点增加
改动精灵与地图遮挡物关系
//改动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);
Cocos2d-x Tiled地图编辑器(一)基本使用的更多相关文章
- Tiled 地图编辑器使用教程-官方demo
一.Tiled Map Editer 下载地址 http://www.mapeditor.org/download.html 二.官方教程查看 下载安装后,不管windows还是Mac系统都包含官方例 ...
- Tiled Map地图编辑器键盘快捷键
Tiled是款不错的地图编辑器,不过快捷键真是隐蔽啊,不看github上得wiki根本不知道,用的过程中查英文文档总是觉得慢,所以翻译成了中文. 通用 右键点击图块(tile):复制图块到图章刷(拖动 ...
- 读取tiled地图
原地址:http://www.unity蛮牛.com/thread-20854-1-1.html Tile是一个非常好用的地图编辑器,一直以来我都在找支持tilemap的unity2D插件,但是找 ...
- 地图编辑器V1
功能:1. 拖放地图元素至地图编辑器中2. 可设置参考图3. 背景图可平铺,中央,左上角等放置4. 地图上的元素可旋转,可删除,可拖动5. 保存地图数据时同时生成XML格式的地图信息 -------- ...
- X-UniTMX:导入大型Tiled地图文件(*.tmx)到Unity3d中比较好的插件
因工作原因,需要导入格子数为1200x1200的Tiled地图文件(*.tmx)到Unity3d中显示出来.尝试过一些其它插件,后面发现X-UniTMX是比较好用的. X-UniTMXhttp://f ...
- 开源地图编辑器 MarbleMap,支持Cocos2d-x坐标系
由9秒社团开发并维护的MarbleMap是支持Cocos2d-x坐标系和as3坐标系的地图编辑器,功能完善高效.这里详细介绍一下它的使用方法! 一.功能简述 由9秒社团开发并维护的MarbleMap是 ...
- 【Cocosd2d实例教程二】地图编辑器Tiled的安装使用
(转载请注明出处:http://blog.csdn.net/buptgshengod) 我们知道cocos2d是一个基于2d效果的游戏引擎,那么如果制作一个2d手机游戏我们需要创建相应的游戏画面,而c ...
- cocos2dx进阶学习之瓦片地图编辑器
之前学习了瓦片地图类,现在我们来学习下瓦片地图制作工具 这个是开源的工具,可以从网上下载,下面我们演示下怎么做地图 步骤1 将需要用到的图片放到一个目录下,比如我机器上就是d:\tiled,这些图片是 ...
- 该Tiled地图制作拿到项目~~这是偷懒,为了直接复制后写来
1.现在,.h声明private: cocos2d::CCSprite* ninja; cocos2d::CCTMXTiledMap* tileMap; 然后.cpp中增加tileMap = CCT ...
随机推荐
- Flex上传文件
前几天写了一篇jsp页面利用ajaxFileUpload上传文件.如今把flex上传页面也分享出来: 前台页面 <?xml version="1.0" encoding=&q ...
- Android ListView 单条刷新方法实践及原理解析
对于使用listView配合adapter进行刷新的方法大家都不陌生,先刷新adapter里的数据,然后调用notifydatasetchange通知listView刷新界面. 方法虽然简单,但这里面 ...
- 关于Hibernate数据库连接进程释放
最近手里头又一桩事情蛮好玩的,就是用Hibernate进行批处理的时候,发现连接数暴增,oracle连接进程数吓死人.解决方案:不是把连接池设置成最大,那样服务器承载不了.及时清除缓存.另外在hibe ...
- 控件编写:增强 TMEMO (一)(增加对WM_HSCROLL消息的处理)
相信没有什么人对 MEMO 陌生了吧.尽管其组件的功能不错.但是,对它进行一些功能的改进,可以更好的使用. 有的时候,我们想要知道,当前的坐标是什么?甚至,想要在 滚动条滚动时触发一些事件. 但,TM ...
- 通过崩溃地址找错误行数之Delphi版
通过崩溃地址找错误行数之Delphi版2009-5-11 17:42:35 来源: 转载 作者:网络 访问:360 次 被顶:2 次 字号:[大 中 小]核心提示:什么是 MAP 文件?简单地讲, M ...
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)
之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 ...
- Delphi 10.1 柏林更新内容简译
新的 SDKTransform.exe 支持转换 Object-C 或 C++ 头文件到Delphi. 修改了对话框的接口,分成了同步和异步两种: http://blog.qdac.cc/?p=380 ...
- qt宽字符串中文乱码(codec->toUnicode值得学习)
乱码原因: QT使用的是utf-8 简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码.而且这里应该是宽字符串. 多字节ANISGB 宽字符UNICODE 多字节显示标准字符的 ...
- cct,web技术
基本信息 全国计算机等级考试二级教程——Web程序设计(2016年版)作 者:教育部考试中心 编出 版 社:高等教育出版社出版时间:20115-12-1 ISBN:9787040442991版 ...
- cct信息安全
基本信息 全国计算机等级考试三级教程——信息安全技术(2016年版) 作 者:教育部考试中心 编 出 版 社:高等教育出版社 出版时间:2015-12-1 ISBN:9787040443035 ...