1.现在,.h声明private:

cocos2d::CCSprite* ninja;

cocos2d::CCTMXTiledMap*  tileMap;

然后.cpp中增加tileMap = CCTMXTiledMap::create("MyTileMap.tmx");





CCTMXLayer* backLayer = tileMap->layerNamed("Tile Layer 1");





CCAssert(backLayer, "Can not find layer named by (Tile Layer 1)");





this->addChild(tileMap); // 地图加到layer上面

2.设置人物的初始位置

CCTMXObjectGroup* og = tileMap->objectGroupNamed("spritePositions");

CCDictionary* posInfoDict = og->objectNamed("ninjaBirthPoint");

int x = posInfoDict->valueForKey("x")->intValue();

int y = posInfoDict->valueForKey("y")->intValue();





ninja = CCSprite::create("Player.png");

ninja->setPosition(ccp(x, y));

tileMap->addChild(ninja);

3.将主角移动到地图的中间

this->setMapPosForView(ccp(x, y));

void HelloWorld::setMapPosForView(cocos2d::CCPoint playerPos){





CCPoint orig = playerPos;

CCPoint dest = ccp(WIN_WIDTH / 2, WIN_HEIGHT / 2);

CCPoint distance = ccpSub(dest, orig);

CCPoint newMapPos = ccp(0, 0) + distance;





newMapPos.x = (newMapPos.x > 0?

0:newMapPos.x);

newMapPos.y = (newMapPos.y > 0?

0:newMapPos.y);





newMapPos.x = (newMapPos.x < WIN_WIDTH - MAP_WIDTH? 

WIN_WIDTH-MAP_WIDTH:newMapPos.x);

newMapPos.y = (newMapPos.y < WIN_HEIGHT - MAP_HEIGHT? 

WIN_HEIGHT - MAP_HEIGHT:newMapPos.y);





tileMap->setPosition(newMapPos);

5.用:ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)来使物体移动

void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){

CCPoint touchPos=pTouch->getLocation();

touchPos=tileMap->convertToNodeSpace(touchPos);

CCPoint origPos=ninjia->getPosition();

CCPoint diff=touchPos-origPos;

CCPoint ninjaDiff = ccp(0, 0);





if (abs(diff.x) > abs(diff.y)){

if (diff.x > 0){

ninjaDiff.x = tileMap->getTileSize().width;

}

else

{

ninjaDiff.x = -tileMap->getTileSize().width;;

}

}

else{

if (diff.y > 0){

ninjaDiff.y = tileMap->getTileSize().height;

}

else

{

ninjaDiff.y = -tileMap->getTileSize().height;

}

}





CCPoint newPos = origPos + ninjaDiff;

ninja->setPosition(newPos);

tileMap->setMapForView(newPos);

该Tiled地图制作拿到项目~~这是偷懒,为了直接复制后写来的更多相关文章

  1. X-UniTMX:导入大型Tiled地图文件(*.tmx)到Unity3d中比较好的插件

    因工作原因,需要导入格子数为1200x1200的Tiled地图文件(*.tmx)到Unity3d中显示出来.尝试过一些其它插件,后面发现X-UniTMX是比较好用的. X-UniTMXhttp://f ...

  2. 准备开一个地图SDK的开源项目

    最近有点空闲时间了, 准备开一个地图SDK的开源项目, 现在的地图SDK已经有很多了, 再做一个跟重新发明个轮子差不多, 但还想做的原因是想在别的轮子的基础上造个轮子... 初步设想是基于开源的地图渲 ...

  3. 星际SC地图制作中生成随机位置,也包括所有需要随机的效果

    星际SC地图制作中生成随机位置,也包括所有需要随机的效果 利用单位 kakaru T 开头那个, kakaru是随机变化位置 注意kakaru的放置位置和占用格子大小,kakaru周围放上LOCATI ...

  4. 星际地图制作中OB无建筑 退出问题

    星际地图制作中OB玩家没有建筑强制退出问题,目前 用下面的方法解决 ob玩家分到一个组,触发里面 延时几秒 我设置的2秒 KILL掉这个组的建筑就行~

  5. Cocos2d-x Tiled地图编辑器(一)基本使用

    Tiled地图编辑器支持普通视角地图和45度角地图, 它生成的地图数据文件cocos2d-x完美的支持,Tiled地图编辑器是一个以普通使用为目标地图编辑器,它使用简单而且能够轻松地在不同的游戏引擎中 ...

  6. 网站地图怎么做?dedecms网站地图制作方法听语音

    网站地图怎么生成?下面分享织梦dedecms系统网站地图的生成方式,怎么制作网站地图,方法很简单.下面介绍一下网站地图优化方法及制作方法. 工具/原料 一个网站 方法/步骤 第一步 登录网站后台 第二 ...

  7. 在线制作GIF图片项目愿景与范围

    在线制作GIF图片项目愿景与范围 a. 业务需求 a.1 背景 在当今社会中,随着聊天软件和web网站的普及,原创动画制作越来越吸引人们的眼球,一个好的动态图片,可能就会为你的网站或本人赢得更多人的认 ...

  8. Arcgis栅格时序地图制作---时间轴动态展示多期影像

    转自原文 Arcgis栅格时序地图制作---时间轴动态展示多期影像 效果如何???满意您go on,不满意咱 say goodbye··· 题外话: 为了在这里动态展示下制作结果,也是费了老劲了,转换 ...

  9. 百度LBS开放平台个性化地图 制作一款独一无二的地图

    百度LBS开放平台个性化地图  制作一款独一无二的地图 天天用百度地图的亲们是否已不再满足仅仅看例如以下的地图样式了呢? 默认百度地图样式 是否特别渴望看特别不一样的地图呢.如带京城81号气息的午夜蓝 ...

随机推荐

  1. Office 2013 正式版 下载地址 带正版验证

    万众期待的正式版Office 2013 降临---英文版/中文简体版 英文版软件下载地址: office_professional_plus_2013_x86_dvd en_office_profes ...

  2. Linux编程实现守护进程

    Linux 守护程序 守护进程(Daemon)它是在一个特定的过程的背景进行.它独立于控制终端的和周期性地执行某些任务或待某些事件.是一种非常实用的进程. Linux的大多数server就是用守护进程 ...

  3. Eclipse背景和匹配出现单词的一些设置

    Eclipse的背景色和关键词的设置这里就不多说了,只说明设置路径: 背景色:[Window]--->[Preference]-->[General]--->[Editors]--- ...

  4. flask开发restful api

    flask开发restful api 如果有几个原因可以让你爱上flask这个极其灵活的库,我想蓝图绝对应该算上一个,部署蓝图以后,你会发现整个程序结构非常清晰,模块之间相互不影响.蓝图对restfu ...

  5. Webbrowser加载Flash后方向键失效问题(用到了OLE接口,没有被处理就转发,够复杂的)

    原文:http://blog.csdn.net/dropme/article/details/6253528 窗体上放一个ApplicationEvent控件,OnMessage事件中这么写 uses ...

  6. Lucene.Net 2.3.1开发介绍 —— 二、分词(二)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(二) 1.2.分词的过程 1.2.1.分词器工作的过程 内置的分词器效果都不好,那怎么办?只能自己写了!在写之前当然是要先看看内置的分词 ...

  7. java中synchronized的使用方法与具体解释

    Java语言的keyword.当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多仅仅有一个线程运行该段代码. 一.当两个并发线程訪问同一个对象object中的这个synchronized ...

  8. 一个计算器的C语言实现

    今天在读<编译原理及实践>时.看到了一个简单的整数计算器的实现. 依照书上的思路,我略微进行了扩展: 1.从整数计算器扩展到小数计算器. 2.支持除法 3.支持空字符. 执行效果例如以下: ...

  9. Codeforces325-B(二分搜索)

    题目:B. Stadium and Games 分析:问题可以转化为下面的等式求解问题: 由于n在10^18范围内,所以k的范围是从0到63即可,这样就可以枚举k,二分m,然后所有符合条件的就是答案了 ...

  10. [C++]new和delete

    Date:2014-1-5 Summary: C++中的动态内存创建与释放(这里就只记录C++中的new和delete了,其他的C风格操作就略过了) 单独记录new和delete的原因是为了学习时候关 ...