在Cocos2d-X中使用瓦片地图是非常常见的,例如在跑酷和塔防游戏中通常会用到瓦片地图,在前面的博客中我也介绍了瓦片地图的使用,这篇博客主要介绍在Cocos2d-X3.0中使用瓦片地图中的对象层,因为3.0和2.0中调用瓦片地图的对象层的方式有所不同
对于瓦片地图的使用可以参考我的博客
瓦片地图编辑器的使用:http://www.jb51.cc/article/p-brgdymtl-za.html
在Cocos2d-X中使用瓦片地图《一》:http://www.jb51.cc/article/p-kfthyfqc-za.html
Cocos2d-X中使用瓦片地图《二》:http://www.jb51.cc/article/p-gpqbjzpb-za.html
首先使用瓦片地图编辑器编辑好一张地图
创建一个MapScene类用于加载地图,并且在MapScene.h中添加下面的代码
#ifndef _MapScene_H_ #define _MapScene_H_ #include "cocos2d.h" USING_NS_CC; class MapScene : public Layer { public: MapScene(void); ~MapScene(void); static Scene* createScene(); bool init(); CREATE_FUNC(MapScene); }; #endif
#include "MapScene.h" MapScene::MapScene(void) { } MapScene::~MapScene(void) { } Scene* MapScene::createScene() { auto scene = Scene::create(); auto layer = MapScene::create(); scene->addChild(layer); return scene; } bool MapScene::init() { if(!Layer::init()) { return false; } //创建tmx地图 TMXTiledMaP* map = TMXTiledMap::create("obj.tmx"); addChild(map); //获得对象数组 TMXObjectGrouP* objG = map->getobjectGroup("OBJEC"); //获得对象数组中的一个对象 auto object = objG->getobject("0"); //获得对象的坐标 float x = object["x"].asFloat(); float y = object["y"].asFloat(); //在对象上创建一个精灵 Sprite* sprite = Sprite::create("1.png"); map->addChild(sprite); //设置精灵的位置 sprite->setPosition(Vec2(x,y)); //设置精灵的描点为左下角 sprite->setAnchorPoint(Vec2(0,0)); return true; }
执行结果: