1 CCTMXTiledMap的使用

TileMap.h

#ifndef __T23TileMap_H__

#define __T23TileMap_H__

#include "cocos2d.h"

USING_NS_CC;

class TileMap :public CCLayer

{

public:

CREATE_FUNC(TileMap);

bool init();

static CCScene * scene();

CCTMXTiledMap* _map;

CCPoint Point2Tile(CCPoint ptGL);

CCPoint Tile2PointLB(CCPoint ptTile);

bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);

};

#endif

TileMap.cpp

#include "TileMap.h"

CCScene * TileMap::scene()

{

CCScene * scene = CCScene::create();

TileMap * layer = TileMap::create();

scene->addChild(layer);

return scene;

}

bool TileMap::init()

{

CCScene * scene = CCScene::create();

//初始化TMXTiledMap,要用一个.tmx

CCTMXTiledMap * map = CCTMXTiledMap::create("Round1.tmx");

addChild(map);

//获得CCTMXLayer的层:layer_0

CCTMXLayer* layer = map->layerNamed("layer_0");

//通过tileAt的方式获得格子,每个格子是一个精灵

CCSprite* sprite = layer->tileAt(ccp(2,2));

//通过tileGIDAT的方式获得gid的值

int gid = layer->tileGIDAt(ccp(2,2));

//让被选中的精灵跳动一下

sprite->runAction(CCJumpBy::create(200, ccp(0, 0), 50, 1000));

//将地图缩放

map->setScale(.5f);

layer->setTileGID(3,ccp(3,3));

_map = map;

setTouchEnabled(true);

//设置触摸方式

setTouchMode(kCCTouchesOneByOne);

CCSprite* sprite1 = CCSprite::create("anchor3.png");

_map->addChild(sprite1);

sprite1->setZOrder(1000);

sprite1->setPosition(Tile2PointLB(ccp(3, 2)));

sprite1->setAnchorPoint(ccp(0,1));

sprite1->setPosition(Tile2PointLB(ccp(3, 2)));

sprite1->setAnchorPoint(ccp(0,1));

return true;

}

//将世界坐标转换成格子坐标

CCPoint TileMap::Point2Tile(CCPoint ptGL)

{

//获得每个格子的宽度

int dx = _map->getTileSize().width;

//设置每个格子的高度

int dy = _map->getTileSize().height;

//将ptGL世界坐标转换成为本地坐标

CCPoint ptMap = _map->convertToNodeSpace(ptGL);

//x轴方向的格子数

int x = ptMap.x / dx;

//这里如果是最左下角算的的值是0,如果y轴上有2个格子,实际的格子的y是1

int y = ptMap.y / dy;

//y方向上的总格子数 - 1 - y

y = _map->getMapSize().height - 1 - y;

return ccp(x,y);

}

//将格子坐标转换成为世界坐标

CCPoint TileMap::Tile2PointLB(CCPoint ptTile)

{

//这里的getMapSize().height不是像素值,而是y方向上的格子数

ptTile.y = _map->getMapSize().height - 1 - ptTile.y;

return ccp(ptTile.x * _map->getTileSize().width,

ptTile.y * _map->getTileSize().height);

}

bool TileMap::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)

{

//获得被选中的坐标值

CCPoint pt = pTouch->getLocation();

CCPoint ptTile = Point2Tile(pt);

_map->layerNamed("layer_0")->setTileGID(0, ptTile);

return true;

}

运行结果:

CCTMXTiledMap的使用相关推荐

  1. Cocos2d-x初入学堂(12)--CCTMXTiledMap和CCTileMapAtlas拼地图

    欢迎转载!转载时请注明出处:http://blog.csdn.net/aa4790139/article/details/8132740 上篇说了场景的切换,这一讲自然是游戏界面的制作了,游戏地图制作 ...

  2. 怎样用cocos2d-x做一个基于地图块的游戏(Part One)

    怎样用cocos2d-X做一个基于地图块的游戏 (Part One) 在这个分为上下两部分的教程中,我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏.在这个简单的地图块游戏里,一 ...

  3. cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示

    1.先定义坦克的一些属性 class Tank : public CCSprite { public :Tank();~Tank();static Tank* createTankWithTankTy ...

  4. wp7使用Cocos2d-X for XNA制作一个塔防类游戏 (二)在游戏中加入地图和怪物。(上)

    地图编辑器的使用 首先先来介绍一下使用地图编辑器tIDE Tile Map Editor来生成TMX文件.tIDE Tile Map Editor的下载地址  http://tide.codeplex ...

  5. Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图

    Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图 在前面的几篇中动手实验使用了CCSprite.CCScene.CCLayer.CCAction.CCMenu等coco ...

  6. 【Cocosd2d实例教程五】Cocos2d添加虚拟摇杆控制器

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍     cocos2d为我们提供了好用的摇杆控制器,主要是对ZJoystick.h和ZJoystick ...

  7. 【Cocosd2d实例教程三】Cocos2d瓦片地图的导入

    (转载请注明出处:http://blog.csdn.net/buptgshengod)    上一节讲了如何使用Tiled制作瓦片地图,下面讲一下如何将地图导入游戏中.     第一步:将生成的文件导 ...

  8. Cocos2d—android 中常用的工具类

    <span style="font-size:18px;"> 在开发游戏过程中通常会用到一个经常编写的重复的代码,比如加载游戏地图,从地图中加载指定点的集合,序列帧的播 ...

  9. 2 TileMapObject的使用

    1 CCTMXObjectGroup的使用方法 为了取以下内容: 操作代码如下: T27TileMapObject.h #ifndef __T27TileMapObject_H__ #define _ ...

最新文章

  1. 八. 输入输出(IO)操作6.文件与目录管理
  2. hashmap的各种问题及答案
  3. MATLAB实现实时录音,语音采集与读写用matlab实现录音以及语谱图的绘制.pdf
  4. [机器学习] 数据特征 标准化和归一化
  5. java 连接ldap_ldap java 连接demo
  6. 创建VPC前,网络规划的4个问题你弄清了吗?
  7. Java笔记-解决WebServiceTemplate中No subject alternative names matching IP address xxx
  8. 字符转获取拼音首字母php实现
  9. JavaScript == 和 ===
  10. 常见的.net误解 1-1 字符串是不可修改的(immutable)
  11. cvpr论文阅读之Deep Spatio-Temporal Random Fields for Efficient Video Segmentation(用于视频分割的深度时空随机场)
  12. flex布局,子元素撑开父元素
  13. 亚马逊美国站UL2849电动自行车标准测试报告
  14. Mackdown 编辑器-马克飞象
  15. Boboniu Plays Chess
  16. Android Google地图接入(一)
  17. php编辑器怎么修改字体,vscode怎么改变字体
  18. 扇贝python离线_Python项目:扇贝网小组查卡助手
  19. 前端面试丨综合整理中高级前端最新面试题
  20. 微信小程序页面自动跳转外链

热门文章

  1. 1.设计模式中监听模式(观察者模式)(Python实现)
  2. 如何用Seaborn描绘柱状图(条形图),箱线图,小提琴图,分类散点图,分面网格分类图,散点图(3)
  3. Java8 ReentrantLock 源码分析
  4. OpenCASCADE绘制测试线束:简单的向量代数和测量之矢量代数命令
  5. wxWidgets:wxMenu/wxMenuBar 示例
  6. boost::mpl模块实现replace_if相关的测试程序
  7. boost::geometry::model::multi_linestring用法的测试程序
  8. boost::describe模块实现计算基础修饰符的测试程序
  9. GDCM:处理(各种操作处理)DICOM图像文件的测试程序
  10. boost::callable_traits是否为is_volatile_member的测试程序