Cocos2d-X研究之v3.x瓦片地图具体解释
在游戏开发过程中,我们会遇到超过屏幕大小的地图,比如即时战略游戏,使得玩家能够在地图中滚动游戏画面。这类游戏一般会有丰富的背景元素,假设直接使用背景图切换的方式,须要为每一个不同的场景准备一张背景图,并且每一个背景图都不小,这样会造成资源浪费。
瓦片地图就是为了解决这问题而产生的。一张大的世界地图或者背景图能够由几种地形来表示,每种地形相应一张小的的图片,我们称这些小的地形图片为瓦片。把这些瓦片拼接在一起,一个完整的地图就组合出来了,这就是瓦片地图的原理。
TileMap方案
在Cocos2d-x中,瓦片地图实现的是TileMap方案,TileMap要求每一个瓦片占领地图上一个四边形或六边形的区域。把不同的瓦片拼接在一起,就能够组成完整的地图了。我们须要非常多较小的纹理来创建瓦片。通常我们会将这些较小的纹理放图一张图片中,这样做会提高画图性能。
瓦片地图编辑器
Cocos2d-x支持由瓦片地图编辑器Tiled Map Editor制作并保存为TMX格式的地图。Tiled Map Editor是一个开源项目,支持Windows、Linux及Mac OS X多个操作系统,我们能够从官网下载到编辑器的Java和QT版本号。
怎样使用Tiled工具建立地图能够參考下面文章:
地图方向
Tiled地图支持直角俯视地图(90°地图)、等距斜视地图(斜45°地图)和六边形地图,不支持左右或上下边界的六边形地图。
地图资源
- 建议瓦片地图素材大小为32*32的倍数
- 瓦片素材组与其它图片不能混合使用
- 仅仅有瓦片素材图能被导入TMX文件
- 每一个Layer最多支持1套瓦片素材组。
瓦片层
- TMX文件里瓦片层的数量没有上限
- 每个瓦片层仅仅能由一种瓦片素材组成
- 每个瓦片层能够被TMXLayer类表示-为SpriteSheet的子类
- 每个单一的瓦片被Sprite表示-父节点为TMXLayer
对象层
- 瓦片地图支持对象组
- 用来加入除背景以外的游戏元素-道具、障碍物等
- 对象组中的对象在TMX文件里以键值对形式存在,因此能够直接在TMX文件里对他进行改动
瓦片地图坐标系
对于一个16*16的瓦片地图文件的坐标系统为
- (0, 0): 左上角
- (15, 15): 右下角

在Cocos2d-x中使用TMX
创建TMX节点
|
1
2
|
TMXTiledMap *map
= TMXTiledMap::create("bg.tmx");
addChild(map,
0); |
遍历子节点
|
1
2
3
4
5
6
7
8
9
10
11
|
Vector
pChildrenArray = map->getChildren(); SpriteBatchNode*
child = NULL; Ref*
pObject = NULL; for
(Vector::iterator it = pChildrenArray.begin(); it != pChildrenArray.end(); it++) {
pObject
= *it; child
= (SpriteBatchNode*)pObject; }
|
获取/删除一个瓦片
|
1
2
3
|
TMXLayer*
layer = map->getLayer("layer0");
Sprite* tile0
= layer->getTileAt(Point(1, 15)); layer->removeTileAt(Point(1,
15)); |
遍历对象层中对象
|
1
2
3
4
5
6
7
8
|
TMXObjectGroup*
objectGroup = map->getObjectGroup("center");
ValueVector object
= objectGroup->getObjects();
for (ValueVector::iterator
it = object.begin(); it != object.end(); it++) { Value
obj = *it;
ValueMap map
= obj.asValueMap(); log("x = %d y = %d",
map.at("x").asInt(), map.at("y").asInt());
}
|
Cocos2d-X研究之v3.x瓦片地图具体解释的更多相关文章
- android瓦片地图技术研究
最近根据公司项目需求,需要制作场馆的室内图并且实现根据rfid信号的自动定位功能,研究了好久找到了一个目前为止还算好用的瓦片地图工具——TileView. github连接:https://githu ...
- Google Map API V3调用arcgis发布的瓦片地图服务
由于最近项目需要用到CAD制作的地图,但之前一直使用的是用谷歌离线瓦片地图的方式,怎么样把CAD图像地图一样有缩放,移动的功能放到网页显示成了难题, 原先的谷歌地图的代码难道就不能用了?重新写一套代码 ...
- scrollview 图片放大 捏合 瓦片地图 相关注意事项
就职文博公司要为博物馆做APP 涉及到瓦片地图的编写 在这里总结一些开发中遇到的问题 (将会不断更新 也是学习阶段) 着急写项目的同学 可以直接看code4上现成的瓦片地图代码:http://www. ...
- OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
开源与成熟商业的瓦片地图服务(TMS 2 WMTS),都有如下共同的特性,基本成为了标准: (1) 坐标系:WGS84 (2) 投影:墨卡托投影(Marcator,正轴等角圆柱投影) ------ ...
- 瓦片地图与geoserver发布
本文主要包括以下内容 TileMill生成Tile影像金字塔(.mbtiles压缩文件) Mbutil(https://github.com/mapbox/mbutil)解压缩 Apache HTTP ...
- Cocos2d-JS中瓦片地图API
为了访问瓦片地图,Cocos2d-JS中访问瓦片地图API,主要的类有:TMXTiledMap.TMXLayer和TMXObjectGroup等.1.TMXTiledMapTMXTiledMap是瓦片 ...
- Cocos2d-x使用瓦片地图
图所示的复杂地图可以使用瓦片地图技术,瓦片地图是用一些小图片(瓦片)拼接而成,这样可以大大地减少内存消耗.如图所示的瓦片地图,只需要如图所示的三个瓦片就可以了. 瓦片地图 地图中的瓦片 瓦片地图的分类 ...
- cocos2dx进阶学习之瓦片地图编辑器
之前学习了瓦片地图类,现在我们来学习下瓦片地图制作工具 这个是开源的工具,可以从网上下载,下面我们演示下怎么做地图 步骤1 将需要用到的图片放到一个目录下,比如我机器上就是d:\tiled,这些图片是 ...
- cocos creator主程入门教程(九)—— 瓦片地图
五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 这一篇介绍瓦片地图,在开发模拟经营类游戏.SLG类游戏.RPG游戏,都会使用到瓦片地图.瓦片地图地面是通 ...
随机推荐
- JS - 提示是否删除
1. OnClientClick="return confirm('确定要删除吗?') 2.自定义函数: 函数: <script type ="text/javascript ...
- S3C6410 纯粹的裸机启动,自己写的SD BOOT启动
这几天晚上一直折腾S3C6410的裸机SD卡启动,不大想使用UBOOT,我是搞硬件的,对底层非常感兴趣,不喜欢已经写好的,因此自己一直在尝试,其实很早之前就试过SD卡启动,也就是ARM11上电后会把S ...
- hdu 4687 Boke and Tsukkomi
Dancing link twice. Find the maximum combination numbers in the first time. Enumerate each node, dan ...
- Swift - 导航条(UINavigationBar)的使用
与导航控制器(UINavigationController)同时实现导航条和页面切换功能不同. 导航条(UINavgationBar)可以单独使用,添加至任何的UIView中.UINavigation ...
- 14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes
14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes adaptive hash index(AHI) 让InnoDB 执行更加像在一个内存数据库里在, 在不牺 ...
- 给你的站点加入 console.js
本文仅先给使用console调试的FE同学,假设你还不知道console是什么.或者还停留在alert阶段,那就不要浪费时间了,say bay bay! 你是否试程序的过程中用过console.log ...
- 关于sizeof的笔试面试题具体解释
原创Blog,转载请注明处处 http://blog.csdn.net/hello_hwc 注意:sizeof是编译期计算出结果的,这一点对后面的理解非常重要 一.关于结构体 先看下代码 #inclu ...
- windows程序员进阶系列:《软件调试》之Win32堆
win32堆及内部结构 Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆.默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中. 要获得_PEB的地址, ...
- 调整Tomcat的并发线程到5000+
调整Tomcat的并发线程数到5000+ 1. 调整server.xml的配置 先调整maxThreads的数值,在未调整任何参数之前,默认的并发线程可以达到40. 调整此项后可以达到1800左右. ...
- spice for openstack
nova.conf vnc_enabled=False [Spice] agent_enabled=True enabled=True html5proxy_base_url=http://x.x.x ...