如何使用tiledmap 教程地图

更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
按住视频可进行拖动
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
cocos2dx视频教程《TiledMap瓦片地图制作与使用》培训
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
cocos2dx视频教程《TiledMap瓦片地图制作与使用》培训
播放量数据:
126人已订阅
你可能还想订阅他们:
{{#needAdBadge}} 广告{{/needAdBadge}}
&正在加载...
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制cocos2d-x(16)
& 使用Tiled软件将地图信息保存为XXX.tmx格式。/*加载Tiled地图,添加到场景中*/
CCTMXTiledMap* map = CCTMXTiledMap::create(&level01.tmx&);
CCTMXLayer* groundLayer = map-&layerNamed(&ground&);
this-&addChild(map);
固定主角出生点,使用Tiled软件的对象层。
CCSize visibleSize = CCDirector::sharedDirector()-&getVisibleSize();
/* 创建精灵 */
CCSprite* playerSprite = CCSprite::create(&player.png&);
/* 将精灵绑定到玩家对象上 */
Player* mPlayer = Player::create();
mPlayer-&bindSprite(playerSprite);
//CCTMXObjectGroup对象存放了对象层的所有对象,通过objectGroupNamed函数获取指定名称的对象层,于是就得到了某个对象层的所有对象,这些对象
//用一个类似HashMap的容器存放。
//map-&objectGroupNamed(&objects&)取得了刚刚创建的objects对象层里面的所有对象.通过objectNamed函数来获得PlayerPoint对象,获得后返回的是一个
//CCDictionary对象,从playerPointDic里取得PlayerPoint对象的X,Y坐标值,然后给玩家设置坐标
/* 加载对象层 */
CCTMXObjectGroup* objGroup = map-&objectGroupNamed(&objects&);
/* 加载玩家坐标对象 */
CCDictionary* playerPointDic = objGroup-&objectNamed(&PlayerPoint&);
float playerX = playerPointDic-&valueForKey(&x&)-&floatValue();
float playerY = playerPointDic-&valueForKey(&y&)-&floatValue();
/* 设置玩家坐标 */
mPlayer-&setPosition(ccp(playerX, playerY));
/* 将玩家添加到地图 */
map-&addChild(mPlayer);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16999次
排名:千里之外
原创:21篇
转载:25篇
(1)(1)(1)(2)(29)(12)上传时间:
56官方微信
扫一扫发现精彩<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&【Cocos2dx工具Tiled工具使用】
【Cocos2dx工具Tiled工具使用】
写在前面——
如果转载请注明出处,谢谢大家支持
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
——Forward
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&我的微博——
QQ技术交流群——forTheDream()
地图的编辑
&&&&在之前的博客中,Forward有提到过一个比喻,游戏开发就好像画家画画,所有游戏中的元素需要一个承载体,画面的承载体是画纸,游戏的承载体是地图(场景)。那么接下来我们就来学习一下一个比较经典的地图编辑器——Tiled。(下载安装过程,这里略去,网上的相关资料略多,这里不再赘述)。&&&&&&
&&&&首先来看看Tiled主界面——
我们需要新建项目,如下图2所示,选择新建项目:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&弹出图3所示对话框,我们在这个对话框中对目标地图开始一个初始的设置。
&&&&&&&&&&&&&&&&&&&&&&&&&&
其中,地图选项组中的跨度和高度指的是你编辑获得的地图的横向和纵向的格子数目,而块大小选项组中的宽度和高度则指的是每一个块的像素宽和像素高。
&&&&这里需要说明的是,因为Forward编辑的目标地图是一个768&1024分辨率的地图,每个格子大小为32&32像素的正方形格子,因此,Forward选择地图大小选项组中的宽度和高度分别为24和32。当然,根据项目的需要,我们自己来设定格子数目。
&&&&我们在一个初始的地图图层上放上自己的图块对象就可以完成一个简单的地图。但是我们在此之前需要将自己的图块导入到工程中,所谓的图块其实就是一张png或者jpg类型的图片而已。如图4所示,我们选择菜单栏地图选项并在他的下拉列表中选择添加一个新图块——
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&如图5所示,在弹出对话框中的名称一栏填入我们对新图块的命名,图像一栏可以通过“浏览”来选择资源路径,点击确定完成新图块的导入。
&&&&&&&&&&&&&&&&&&&&&&&
&&&&图6,资源导入成功。
导入新图块完成之后,我们就可以像使用画刷一样来使用新图块中的资源来绘制我们的地图了。
&&&&编辑过程不再说明,来张编辑效果图把——
&&&&&&&&&&&&&&&&
&&&&这样一个可视的地图就展现在我们面前了,但是这样的地图在程序中怎么加载呢?加载到程序中又该怎么去使用呢?在程序世界中应该是一个一个对象的集成的,这里如果只是用这么一张图块创建一张地图的话,加载的程序中几乎没什么用。我们需要在它的基础上在创建一个对象层,而这个对象层上我们会布置上对应的对象,这样当我们在程序中去加载这张地图时就可以通过解析对象层来获得一张对象地图,在游戏开发中就可以操作各个对象去完成预期的效果
&&&&如下图8,在图层窗口右键点击创建一个对象层——
&&&&&&&&&&&&&&&&&&&&&&&
&&&&有了这个对象层之后呢,我们就可以在对象层上去创建自己需要的对象了,选择工具栏上对应的工具。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&Forward这里需要的地图中的每个对象都是正方形的,所以选择如图9所示。OK,选择好对象创建工具,开始创建对象。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&Tiled支持一个对象占用多个瓷砖块,这个可以根据自己游戏的需要去完成。并且我们可以根据需要对每个对象进行一些属性的设置。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&好的,保存地图得到tmx地图文件一张,这里需要说明的是,其实后面的那层对于程序中来说其实不是必需的,我们大可以把那一层删掉,只保留对象层,但是为了方便后续地图再编辑修改,我们也可以将后面一层保留。
地图的加载使用
&&&&有了前面创建的地图,我们怎么在程序中来使用它呢?带着这个问题,我们继续后续的学习——
&&&&在cocos2dx中我们可以找到一个CCTMXTiledMap类,这个类可以帮助我们完成对tmx格式地图文件的创建和操作。
pTMXTiledMap = cocos2d::CCTMXTiledMap::create("GameSceneMap.tmx");
this-&addChild(pTMXTiledMap,0,1);
通过create接口创建,并且add到场景中即可,这样我们就成功将这张地图加载到程序中了。这里需要说明的是,如果你按照Forward前面提到的将后面的背景层保留,那么我们看到的是如图13所示的结果。
可以明显看到,场景中只有一个对象,那就是这张地图,而我们几乎从这张地图上不能获得我们所预期中的对象属性。
但是如果你将背景层删掉了,我们得到的结果是什么呢——地图确确实实加载成功了,但是我们的场景中什么都看不到,别灰心,我们除了创建加载这样地图外,还需要一些额外的工作去做,那就是解析tmx地图中的对象属性。
cocos2d::CCTMXObjectGroup* group =
pTMXTiledMap-&objectGroupNamed("Objects");
cocos2d::CCArray* objects = group-&getObjects();
cocos2d::CCDictionary* pDic = NULL;
cocos2d::CCObject* pObject = NULL;
CCARRAY_FOREACH(objects, pObject)
pDic = static_cast(pObject);
ParseObject(pDic);
查看上面一段代码清单,操作过程是这样的。通过objectGroupNamed接口根据我们编辑tmx地图的时候给对象层起的名字获得对象组,然后通过objects接口我们可以获得这个层上的所有对象,这些对象保存在一个Array中,然后我们就可以对每个对象进行逐个解析了(说明一下的是这里我们将每个Object转换为CCDictionary来处理,这样地图上的这个对象属性就以键值对的方式保存在对应的CCDictionary中了)。
那么针对每个对象,我们是如何解析的呢?
(strcmp(pDictionary-&valueForKey("name")-&getCString(),"Tree") == 0)
Tree* pTree = new
pTree-&initWithFile("tree.png");
atoi(pDictionary-&valueForKey("x")-&getCString());
atoi(pDictionary-&valueForKey("y")-&getCString());
pTree-&setAnchorPoint(ccp(0,0));
pTree-&setPosition(ccp(x,y));
pTMXTiledMap-&addChild(pTree);
ObjectManager::getInstance()-&AddObject(pTree);
我们通过对比对象name值判定如果是树木,就创建一棵“树”并设置其属性之后添加到场景中。
好了,其他对象的解析过程大致类似,这里我们就不再赘述了,华丽丽来一张解析之后的运行效果图吧~
&&&&&&&&&&&&&&&&
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 tiledmap 地图素材 的文章

 

随机推荐