Tiled Map Editor(一)
出处:http://blog.csdn.net/zhy_cheng/article/details/8308609
Tiled Map Editor是Cocos2d-x支持的地图编辑器,使用Tiled编辑出的地图可以很方便的被Cocos2d-x使用Tiled的官网是Tiled Map Editor。我使用的地图编辑器是QT版本。
好了,下面就试一试吧。
1.编辑地图
选择文件----->新文件
然后选择地图----->新图块,选择Tiled安装目录下的examples里的图片
在这里图片中间和最左边最上边都有黑线,所以绘制偏移1个像素,边距和间距都为一。
下面将图层的名字改为floor,作为地板。
把地板铺上砖。
新建一个图层,改名为wall,在上面摆上自己喜欢的东西吧。我设计成如下:
下一步是设置主角,这也比较难的一步。
选择图层------>添加对象层,改对象层为hero。
现在在对象层中添加对象。点击工具栏上的添加对象,在地图上话按住鼠标拖出一块。右击该块,改成如下
我们看到,下面可以添加名称和值,其实这就是键值对。今后会用对,现在还没有必要用到。
好了,地图编辑好了,先设置参数 ,点击编辑----->参数,设置为下
保存地图。
2.使用地图
使用文本编辑器打开刚才编辑好的地图,将
<image source="D:/application/Tiled/examples/tmw_desert_spacing.png" width="265" height="199"/>
改为
<image source="tmw_desert_spacing.png" width="265" height="199"/>
新建一个Cocos2d-x的项目,将地图文件和打开的图块文件复制到resource文件夹下。
在头文件中加入
- cocos2d::CCTMXTiledMap *_tileMap;
将init函数中的菜单,精灵,文字的代码删除,加入下面的代码:
- _tileMap=CCTMXTiledMap::create("theMap.tmx");
- addChild(_tileMap);
编译运行,效果如下
下面从地图中获得精灵的位置,在头文件中加入精灵的声明
- cocos2d::CCSprite *_player;
在源文件中添加如下代码
- CCTMXObjectGroup *objects=_tileMap->objectGroupNamed("hero");//获取对象层
- CCDictionary *spawnPoint=objects->objectNamed("pa");//获取对象
- const CCString *x=spawnPoint->valueForKey("x");//获取对象的坐标
- const CCString *y=spawnPoint->valueForKey("y");
- /
- char *tempx=new char[30];//这里的代码将CCString转换为int
- char *tempy=new char[30];
- memset(tempx,0,30);
- memset(tempy,0,30);
- sprintf(tempx,x->getCString());
- sprintf(tempy,y->getCString());
- int px=atoi(tempx);
- int py=atoi(tempy);
- delete tempx;
- delete tempy;
- //
- _player=CCSprite::create("www.png");
- _player->setPosition(ccp(px,py));
- addChild(_player);
这里创建精灵,并且从地图中获得精灵的位置,从而设置精灵的位置。下面是效果图
下面接着让这个hero可以移动,先添加鼠标响应,在init中添加如下代码
- CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);
接着覆盖父类的鼠标响应消息
- bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
- {
- return 1;
- }
- void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
- {
- cocos2d::CCPoint pp=pTouch->getLocation();
- if(fabs(pp.x-_player->getPosition().x)>=fabs(pp.y-_player->getPosition().y))
- {
- if(pp.x>=_player->getPosition().x)
- {
- _player->setPosition(ccp(_player->getPosition().x+32,_player->getPosition().y));
- }
- else
- {
- _player->setPosition(ccp(_player->getPosition().x-32,_player->getPosition().y));
- }
- }
- else
- {
- if(pp.y>=_player->getPosition().y)
- {
- _player->setPosition(ccp(_player->getPosition().x,_player->getPosition().y+32));
- }
- else
- {
- _player->setPosition(ccp(_player->getPosition().x,_player->getPosition().y-32));
- }
- }
- }
在这里,先在ccTouchBegan中返回true,以便在ccTouchEnded中处理事件。
原理是先判断鼠标点击的点与hero现在的点是在x方向还是在y方向上的距离大,若在x方向上距离大,则改变x左边,若在y方向上距离大,则改变y的坐标。然后使hero向着点击点移动。
下面是效果图
好了,效果达到了,下一篇继续Tiled Map Editor,欢迎继续关注。
Tiled Map Editor(一)相关推荐
- How to Make Terrains in Tiled Map Editor
Published July 13th, 2015 by Stephen Gygi How to Make Terrains in Tiled Map Editor http://www.binary ...
- 【日常点滴016】python游戏库arcade结合Tiled map editor地图编辑器和Pymunk物理引擎制作游戏过程记录,并最终打包为exe文件
独此一家,建议收藏 前言 一.创建一个空白窗口 step001.py代码示例 二.创建很多全局能用的常量 step002.py代码示例 三.创建实例变量即代表各种精灵等的变量 step003.py代码 ...
- 【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)
原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/8308609 Tiled Map Editor是Cocos2d-x支持的地图编 ...
- html5地图编辑器,Tiled地图编辑器 Tiled Map Editor 的使用(一)基础功能+地形功能...
看了很久关于 Tiled Map Editor 相关资料,但是网上的东西相对太少了,多日整理之后重新写一份吧 一方面是对自己学习的总结 另外也是和想入门的人做个分享. 首先是官网下载地址 http:/ ...
- Tiled Map Editor(瓦片地图编辑器)的Java和QT版本区别
尊重作者劳动,转载时请标明文章出处. 作者: Bugs Bunny 地址: http://www.cnblogs.com/cocos2d-x/archive/2012/05/03/2479469.ht ...
- Tiled地图编辑器 Tiled Map Editor 的使用(一)基础功能+地形功能
看了很久关于 Tiled Map Editor 相关资料,但是网上的东西相对太少了,多日整理之后重新写一份吧 一方面是对自己学习的总结 另外也是和想入门的人做个分享. 首先是官网下载地址 http ...
- Tiled Map Editor libgdx 讲解
Tiled Map Editor 主页为:http://www.mapeditor.org/,中文基本都翻译为瓦片编辑器,原因便是此工具是将小的碎片拼接在一起,形成一个个地图,因此叫做瓦片编辑器. 工 ...
- cocos2d-x 游戏 之 Tiled Map Editor(地图编辑)
转载于:http://blog.csdn.net/zhy_cheng/article/details/8308609 Tiled Map Editor是Cocos2d-x支持的地图编辑器,使用Tile ...
- Tiled Map Editor 地图编辑器(一)基础功能+地形功能
看了很久关于 Tiled Map Editor 相关资料,但是网上的东西相对太少了,多日整理之后重新写一份吧 一方面是对自己学习的总结 另外也是和想入门的人做个分享. 本文链接地址: [url]htt ...
最新文章
- vue 高阶面试题_高级Web前端工程师面试之Vue问题汇总解析
- BLE-NRF51822教程8-动态广播
- dotnet 手工打一个 dotnet tool 包
- android 应用程序 判断 ,如何判断Android应用程序是否正在前台运行?
- PHP移动互联网开发笔记(3)——运算符
- hdu2570 迷瘴
- 前端控件JQuery Datatables使用——常用功能初始化
- 杂记 - 进化成更好的人
- UIColor与十六进制字符串互转
- 通过完美python注释,打印类的帮助文档
- python安装numpy模块教程_Python中Numpy包的安装与使用方法简明教程
- 2022 年最佳 15 款监控工具!你不可错过
- 18【C语言 趣味算法】“猜牌术”问题
- 博通Broadcom系列网卡连接受限问题
- Vue中使用js-web-screen-shot插件实现截屏功能
- 【Grafana】【八】可视化之Stat、Gauge和Bar Gauge
- python常用函数库-Python常用库大全及简要说明
- 哺乳动物细胞转录调控入门---染色质修饰与重塑
- 程序员到35岁真的会失业吗
- 计算机控制多釜串联 实验报告,多釜串联流动特性的测定..doc