Cocos格子地图(1)
2016-04-16 14:39
1141 查看
格子地图
如同一块块砖瓦拼成的地板一样的地图,是由一张大图的资源文件和.tmx的描述文件组成的。创建格子地图如下(格子地图相当于节点):TMXTiledMap* map=
TMXTiledMap::create("TileMaps/orthogonal-test1.tmx");
addChild(map);
可以通过map->setScale(x,y) 缩放地图
如果图片大小大于块的定义大小,如何对齐?
TileMap将每个格子的锚点设置在了左下角,于是大于的部分会往上面和右面延展
如果地图上某个格子的精灵被我们一道别的地方时,格子的位置是不会变的,只是精灵的位置变了(格子精灵就是图片,格子就是位置)
TMXTiledMap类,有几个接口
TMXTiledMap::getContentSize 整个地图的尺寸,以像素为单位
TMXTiledMap::getMapSize 整个地图的尺寸,以地图块为单位,比如说地图由12x12块砖头组成,这个函数返回 Size(12,12)
TMXTiledMap::getTileSize 一个砖块的尺寸,以像素为单位,和获取图元大小方式不同,图元是getBoundingBox
地图层
TMXTiledMap是格子地图类 由TMXLayer组成,在TMXLayer中,有许多Tile(瓦片),Tile对应的是精灵。TMXTiledMap至少包含一个图元文件,图元文件在地图中叫TileSet(图元就是png图(可能包含在.tsx中)),精灵使用的图片,由TileSet提供,TileSet每个块都对应有一个GroupID来标记
图层也会有编号,渲染时编号越低的越被先画出
地图的层次关系,在.tmx文件中会有详细说明,每层会有名字、宽高等信息(下面的乱码是经过加密的):
<layername="background"width="228"height="14">
<dataencoding="base64"compression="zlib"> eJzt07EJwDAQwEBD5rP3HydDfMAiXHG9Gu1nrQ184gzd7oc/8SN0+BE6/AgdfoQOP0KHH6HDj9DhR+jwI3T4ETr8CB1+hI7pjy8Tu+aO
</data>
</layer>
层的接口:
TMXLayer::getTileAt(pos)获取参数位置的精灵,注意这个pos以块为单位,要求pos的x和y必须是整数
TMXLayer::getTileGIDAt(pos)获取pos位置的瓦片gid(GID都是从1开始排的)
层的操作:
/* 获取层*/
TMXLayer* layer =map->getLayer("Layer0");
layer->setLocalZOrder(100);
/* 获取左下角精灵,注意地图格子的坐标体系是UI坐标体系(坐标原点在左上角) */
Sprite* sprite =layer->getTileAt(Vec2(0, 11)); //getTileAt返回一个精灵
必须注意的是,getTileAt中的坐标是格子坐标,(0,11)表示UI坐标下第1行第12块,是从0开始的。
getLayer中的参数就是在.tmx中定义好的层名字。
相关文章推荐
- cocos2dx的数据保存之UserDault
- cocos2dx+lua注册事件函数详解
- Cocos2d-x移植android增加震动效果
- cocos2d-lua 下使用protobuffer
- cocos2d_lua播放动画
- cocos2d-x自制工具07:打印cocos2d-x的节点树
- cocos2dx 压缩图片的网站/工具
- 个人初做小游戏RunRunMagic(五) 总结
- cocos模拟器已经启动 但是不能访问6010端口
- class() 高级用法 --cocos2dx- lua
- Cocos2dx 3.x的android studio项目之间.so库、资源移植
- cocos2d-x 3.x DrawNode的使用
- mac下创建cocos2d-x的android项目详细流程
- cocos2d-x3.0 macOS下配置Android开发环境以及使用cocos2d-console来新建执行project
- Cocos2d-x 3.0中 物理碰撞检测中onContactBegin回调函数不响应问题
- 骨骼动画中为每个骨骼设置单独的颜色
- cocos2dx CCArray
- cocos2dx抗锯齿与渲染冲突——待解决
- cocos2dx抗锯齿问题
- cocos-lua帧动画使用