cocos2d-x-3.0学习笔记之瓦片地图的使用
2016-08-07 12:47
411 查看
cocos3.0对cocos2.00做了很多的改变与优化,如果直接将cocos2.0里的游戏代码移植到cocos3.0中会报很多的错误。例如在获取瓦片地图的属性时更会如此。下面做个例子,首先我们将制作好的瓦片地图加载到程序中
加载好瓦片地图之后,我们如何得到瓦片地图的属性
![](http://img.blog.csdn.net/20160807121331655)
例如我们想得到enemy对象的x、y坐值
首先我们需要得到这个瓦片对象层中的对组,幸运的是cocos给我们提供了一个按对象组名获得对象组的api函数:
TMXObjectGroup* getObjectGroup(const std::string& groupName) const;
因此首先得到对象组objects:
得到对象组之后,我们要得到对象,在cocos2.0的版本中返回的对象为CCArray组,因此可以直接这样做
首先创建一个数组将从对象组里得到的所有对象保存到数组里,然后遍历数组得到单个对象并将它转化成字典,然后在字典中进行字符串的索引找到自己需要的属性并得到它的值,得到的值为一个String字符串,还要转化成我们需要的float坐标值。
在cocos3.0中,这种方法行不通,因为TMXObjectGroup类的getObjects方法返回的不再是一个CCArray数组,而是一ValueVector。
因此需要这样做。
我们得到ValueVector对象然后按值索引得到我们需要的属性值.
auto m_map = TMXTiledMap::create("MarioMap.tmx"); this->addChild(m_map);
加载好瓦片地图之后,我们如何得到瓦片地图的属性
例如我们想得到enemy对象的x、y坐值
首先我们需要得到这个瓦片对象层中的对组,幸运的是cocos给我们提供了一个按对象组名获得对象组的api函数:
TMXObjectGroup* getObjectGroup(const std::string& groupName) const;
因此首先得到对象组objects:
TMXObjectGroup *group = m_map->getObjectGroup("objects");
得到对象组之后,我们要得到对象,在cocos2.0的版本中返回的对象为CCArray组,因此可以直接这样做
CCArray* objects = group->getObjects(); CCObject* object CCARRAY_FOREACH(objects, object) { CCDictionary* dict = (CCDictionary*)object; if (dict->valueForKey("type")->m_sString =="mushroom") { const CCString* x = dict->valueForKey("x"); const CCString* y = dict->valueForKey("y"); break; } }
首先创建一个数组将从对象组里得到的所有对象保存到数组里,然后遍历数组得到单个对象并将它转化成字典,然后在字典中进行字符串的索引找到自己需要的属性并得到它的值,得到的值为一个String字符串,还要转化成我们需要的float坐标值。
在cocos3.0中,这种方法行不通,因为TMXObjectGroup类的getObjects方法返回的不再是一个CCArray数组,而是一ValueVector。
因此需要这样做。
ValueVector vectorObjects = group->getObjects(); for (ValueVector::iterator iter = vectorObjects.begin(); iter != vectorObjects.end(); iter++) { if (iter->asValueMap().at("type").asString() == "mushroom") { float x = object.at("x").asFloat(); float y = object.at("y").asFloat(); break; }
我们得到ValueVector对象然后按值索引得到我们需要的属性值.
相关文章推荐
- 【Cocos2d-X开发学习笔记】第25期:游戏背景之瓦片地图集类(CCTMXTiledMap)的使用
- cocos2d-x学习笔记(15)--地图的使用1(TMX)
- 【Cocos2d-X开发学习笔记】第26期:游戏背景之滚动地图背景(CCParallaxNode)的使用
- cocos2d-x-3.0学习笔记之使用listView实现滚屏效果
- cocos2d js 学习笔记之瓦片地图
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环&主角添加动作
- 瓦片地图学习笔记一 编辑器使用及地图添加,对象层应用
- cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
- 【Cocos2d-X开发学习笔记】第26期:游戏背景之滚动地图背景(CCParallaxNode)的使用
- cocos2d-x 学习笔记之Tiled Map地图使用时的一些问题
- Cocos2d-x 3.0中使用瓦片地图中的对象层
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环&主角加入动作
- cocos2d-x-3.0学习笔记之如何实现地图的卷动
- cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoin、抗锯齿
- 【Cocos2D-X 学习笔记】Cocos2D-x 3.0+VS开发环境搭建[使用Python]
- 【Cocos2d-X开发学习笔记】第27期:游戏背景之贴图地图类(CCTileMapAtlas)的使用
- 【Cocos2d-X开发学习笔记】开发工具之Tiled地图编辑器的使用
- 【Cocos2d-X开发学习笔记】第27期:游戏背景之贴图地图类(CCTileMapAtlas)的使用
- 【Cocos2d-X开发学习笔记】第04期:渲染框架之场景类(CCScene)的使用
- 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用