出处: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文件夹下。

在头文件中加入

[cpp] view plaincopy
  1. cocos2d::CCTMXTiledMap *_tileMap;

将init函数中的菜单,精灵,文字的代码删除,加入下面的代码:

[cpp] view plaincopy
  1. _tileMap=CCTMXTiledMap::create("theMap.tmx");
  2. addChild(_tileMap);

编译运行,效果如下

下面从地图中获得精灵的位置,在头文件中加入精灵的声明

[cpp] view plaincopy
  1. cocos2d::CCSprite *_player;

在源文件中添加如下代码

[cpp] view plaincopy
  1. CCTMXObjectGroup *objects=_tileMap->objectGroupNamed("hero");//获取对象层
  2. CCDictionary  *spawnPoint=objects->objectNamed("pa");//获取对象
  3. const CCString  *x=spawnPoint->valueForKey("x");//获取对象的坐标
  4. const CCString  *y=spawnPoint->valueForKey("y");
  5. /
  6. char *tempx=new char[30];//这里的代码将CCString转换为int
  7. char *tempy=new char[30];
  8. memset(tempx,0,30);
  9. memset(tempy,0,30);
  10. sprintf(tempx,x->getCString());
  11. sprintf(tempy,y->getCString());
  12. int px=atoi(tempx);
  13. int py=atoi(tempy);
  14. delete tempx;
  15. delete tempy;
  16. //
  17. _player=CCSprite::create("www.png");
  18. _player->setPosition(ccp(px,py));
  19. addChild(_player);

这里创建精灵,并且从地图中获得精灵的位置,从而设置精灵的位置。下面是效果图

下面接着让这个hero可以移动,先添加鼠标响应,在init中添加如下代码

[cpp] view plaincopy
  1. CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);

接着覆盖父类的鼠标响应消息

[cpp] view plaincopy
  1. bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
  2. {
  3. return 1;
  4. }
  5. void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
  6. {
  7. cocos2d::CCPoint pp=pTouch->getLocation();
  8. if(fabs(pp.x-_player->getPosition().x)>=fabs(pp.y-_player->getPosition().y))
  9. {
  10. if(pp.x>=_player->getPosition().x)
  11. {
  12. _player->setPosition(ccp(_player->getPosition().x+32,_player->getPosition().y));
  13. }
  14. else
  15. {
  16. _player->setPosition(ccp(_player->getPosition().x-32,_player->getPosition().y));
  17. }
  18. }
  19. else
  20. {
  21. if(pp.y>=_player->getPosition().y)
  22. {
  23. _player->setPosition(ccp(_player->getPosition().x,_player->getPosition().y+32));
  24. }
  25. else
  26. {
  27. _player->setPosition(ccp(_player->getPosition().x,_player->getPosition().y-32));
  28. }
  29. }
  30. }

在这里,先在ccTouchBegan中返回true,以便在ccTouchEnded中处理事件。

原理是先判断鼠标点击的点与hero现在的点是在x方向还是在y方向上的距离大,若在x方向上距离大,则改变x左边,若在y方向上距离大,则改变y的坐标。然后使hero向着点击点移动。

下面是效果图

好了,效果达到了,下一篇继续Tiled Map Editor,欢迎继续关注。

Tiled Map Editor(一)相关推荐

  1. 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 ...

  2. 【日常点滴016】python游戏库arcade结合Tiled map editor地图编辑器和Pymunk物理引擎制作游戏过程记录,并最终打包为exe文件

    独此一家,建议收藏 前言 一.创建一个空白窗口 step001.py代码示例 二.创建很多全局能用的常量 step002.py代码示例 三.创建实例变量即代表各种精灵等的变量 step003.py代码 ...

  3. 【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

    原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/8308609 Tiled Map Editor是Cocos2d-x支持的地图编 ...

  4. html5地图编辑器,Tiled地图编辑器 Tiled Map Editor 的使用(一)基础功能+地形功能...

    看了很久关于 Tiled Map Editor 相关资料,但是网上的东西相对太少了,多日整理之后重新写一份吧 一方面是对自己学习的总结 另外也是和想入门的人做个分享. 首先是官网下载地址 http:/ ...

  5. Tiled Map Editor(瓦片地图编辑器)的Java和QT版本区别

    尊重作者劳动,转载时请标明文章出处. 作者: Bugs Bunny 地址: http://www.cnblogs.com/cocos2d-x/archive/2012/05/03/2479469.ht ...

  6. Tiled地图编辑器 Tiled Map Editor 的使用(一)基础功能+地形功能

    看了很久关于 Tiled Map Editor 相关资料,但是网上的东西相对太少了,多日整理之后重新写一份吧 一方面是对自己学习的总结 另外也是和想入门的人做个分享. 首先是官网下载地址   http ...

  7. Tiled Map Editor libgdx 讲解

    Tiled Map Editor 主页为:http://www.mapeditor.org/,中文基本都翻译为瓦片编辑器,原因便是此工具是将小的碎片拼接在一起,形成一个个地图,因此叫做瓦片编辑器. 工 ...

  8. cocos2d-x 游戏 之 Tiled Map Editor(地图编辑)

    转载于:http://blog.csdn.net/zhy_cheng/article/details/8308609 Tiled Map Editor是Cocos2d-x支持的地图编辑器,使用Tile ...

  9. Tiled Map Editor 地图编辑器(一)基础功能+地形功能

    看了很久关于 Tiled Map Editor 相关资料,但是网上的东西相对太少了,多日整理之后重新写一份吧 一方面是对自己学习的总结 另外也是和想入门的人做个分享. 本文链接地址: [url]htt ...

最新文章

  1. vue 高阶面试题_高级Web前端工程师面试之Vue问题汇总解析
  2. BLE-NRF51822教程8-动态广播
  3. dotnet 手工打一个 dotnet tool 包
  4. android 应用程序 判断 ,如何判断Android应用程序是否正在前台运行?
  5. PHP移动互联网开发笔记(3)——运算符
  6. hdu2570 迷瘴
  7. 前端控件JQuery Datatables使用——常用功能初始化
  8. 杂记 - 进化成更好的人
  9. UIColor与十六进制字符串互转
  10. 通过完美python注释,打印类的帮助文档
  11. python安装numpy模块教程_Python中Numpy包的安装与使用方法简明教程
  12. 2022 年最佳 15 款监控工具!你不可错过
  13. 18【C语言 趣味算法】“猜牌术”问题
  14. 博通Broadcom系列网卡连接受限问题
  15. Vue中使用js-web-screen-shot插件实现截屏功能
  16. 【Grafana】【八】可视化之Stat、Gauge和Bar Gauge
  17. python常用函数库-Python常用库大全及简要说明
  18. 哺乳动物细胞转录调控入门---染色质修饰与重塑
  19. 程序员到35岁真的会失业吗
  20. 计算机控制多釜串联 实验报告,多釜串联流动特性的测定..doc

热门文章

  1. bzoj4372 烁烁的游戏
  2. 工信部装备司文件首提数字孪生关键技术
  3. python动态仪表图_matplotlib仪表动态更新
  4. 2022年湖南省中医执业医师考试第二单元中医诊断学(一)
  5. Flume从入门实战到精通再到面试一文搞定
  6. Oracle 11g win32位 window7下安装教程 (其实64位类同)
  7. nginx服务器缓存文件清理,清除nginx缓存文件并不总是有效
  8. iPhone 和iPad的Icon大小和设置
  9. Camera HAL3学习
  10. win10自带录屏怎么用?两种方法快来get