CCTMXTiledMap的使用
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的使用相关推荐
- Cocos2d-x初入学堂(12)--CCTMXTiledMap和CCTileMapAtlas拼地图
欢迎转载!转载时请注明出处:http://blog.csdn.net/aa4790139/article/details/8132740 上篇说了场景的切换,这一讲自然是游戏界面的制作了,游戏地图制作 ...
- 怎样用cocos2d-x做一个基于地图块的游戏(Part One)
怎样用cocos2d-X做一个基于地图块的游戏 (Part One) 在这个分为上下两部分的教程中,我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏.在这个简单的地图块游戏里,一 ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
1.先定义坦克的一些属性 class Tank : public CCSprite { public :Tank();~Tank();static Tank* createTankWithTankTy ...
- wp7使用Cocos2d-X for XNA制作一个塔防类游戏 (二)在游戏中加入地图和怪物。(上)
地图编辑器的使用 首先先来介绍一下使用地图编辑器tIDE Tile Map Editor来生成TMX文件.tIDE Tile Map Editor的下载地址 http://tide.codeplex ...
- Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图
Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图 在前面的几篇中动手实验使用了CCSprite.CCScene.CCLayer.CCAction.CCMenu等coco ...
- 【Cocosd2d实例教程五】Cocos2d添加虚拟摇杆控制器
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍 cocos2d为我们提供了好用的摇杆控制器,主要是对ZJoystick.h和ZJoystick ...
- 【Cocosd2d实例教程三】Cocos2d瓦片地图的导入
(转载请注明出处:http://blog.csdn.net/buptgshengod) 上一节讲了如何使用Tiled制作瓦片地图,下面讲一下如何将地图导入游戏中. 第一步:将生成的文件导 ...
- Cocos2d—android 中常用的工具类
<span style="font-size:18px;"> 在开发游戏过程中通常会用到一个经常编写的重复的代码,比如加载游戏地图,从地图中加载指定点的集合,序列帧的播 ...
- 2 TileMapObject的使用
1 CCTMXObjectGroup的使用方法 为了取以下内容: 操作代码如下: T27TileMapObject.h #ifndef __T27TileMapObject_H__ #define _ ...
最新文章
- 八. 输入输出(IO)操作6.文件与目录管理
- hashmap的各种问题及答案
- MATLAB实现实时录音,语音采集与读写用matlab实现录音以及语谱图的绘制.pdf
- [机器学习] 数据特征 标准化和归一化
- java 连接ldap_ldap java 连接demo
- 创建VPC前,网络规划的4个问题你弄清了吗?
- Java笔记-解决WebServiceTemplate中No subject alternative names matching IP address xxx
- 字符转获取拼音首字母php实现
- JavaScript == 和 ===
- 常见的.net误解 1-1 字符串是不可修改的(immutable)
- cvpr论文阅读之Deep Spatio-Temporal Random Fields for Efficient Video Segmentation(用于视频分割的深度时空随机场)
- flex布局,子元素撑开父元素
- 亚马逊美国站UL2849电动自行车标准测试报告
- Mackdown 编辑器-马克飞象
- Boboniu Plays Chess
- Android Google地图接入(一)
- php编辑器怎么修改字体,vscode怎么改变字体
- 扇贝python离线_Python项目:扇贝网小组查卡助手
- 前端面试丨综合整理中高级前端最新面试题
- 微信小程序页面自动跳转外链
热门文章
- 1.设计模式中监听模式(观察者模式)(Python实现)
- 如何用Seaborn描绘柱状图(条形图),箱线图,小提琴图,分类散点图,分面网格分类图,散点图(3)
- Java8 ReentrantLock 源码分析
- OpenCASCADE绘制测试线束:简单的向量代数和测量之矢量代数命令
- wxWidgets:wxMenu/wxMenuBar 示例
- boost::mpl模块实现replace_if相关的测试程序
- boost::geometry::model::multi_linestring用法的测试程序
- boost::describe模块实现计算基础修饰符的测试程序
- GDCM:处理(各种操作处理)DICOM图像文件的测试程序
- boost::callable_traits是否为is_volatile_member的测试程序