cocos2d-x使用地图编辑器的类(cocos2d-x学习)

cocos2d-x支持使用Tiled地图编辑器创建TMX格式的地图

官网下载地址

下载完成之后,直接安装完成。

怎么使用地图编辑器,参考官网文档。


一、现在怎么把Tiled地图加载到cocos2d-x的场景中

在.h文件添加一下成员变量

private:

Sprite* m_rSprite 
TMXTiledMap* m_gGameMap; //
void initMap(); //地图初始化

在.cpp文件做如下操作

bool GameFatherLayer::init()
{
if ( !Layer::init() )
{
return false;
}

initMap();


return ture;

}

void GameFatherLayer::initMap()
{
m_gGameMap = TMXTiledMap::create("tile.tmx");
m_gGameMap->setPosition(Vec2::ZERO);
this->addChild(m_gGameMap);
}

在这里我们调用的是TMXTiledMap类的静态方法把我们创建的地图加载到我们的游戏场景里。

TMXTileMap类是继承自Node类,所以他有Node类的属性,下面我们看TMXTiledMap的一些常用的方法:

1、TMXLayer* getLayer(const std::string  & LayerName); //通过层名获得层对象

2、TMXObjectGroup* getObjectGroup(const std:: &groupName); //通过层名获得层中对象组集合

3、Size& getMapSize(); //获得地图尺寸,他的单位是瓦片

4、Size& getTileSize() //获得瓦片的尺寸,他的单位是像素

二、把Tiled地图的对象层role坐标在游戏里使用

void GameFatherLayer::extraInit()
{
TMXObjectGroup* group = m_gGameMap ->getObjectGroup("obj");
auto valueMap = group->getObject("role");
float x = valueMap.at("x").asFloat();
float y = valueMap.at("y").asFloat();
m_rSprite = Sprite::create("hero.png");
m_rSprite->setPosition(Vec2(x,y));
m_rSprite->setAnchorPoint(Vec2::ZERO);
m_gGameMap ->addChild(m_rSprite,ROLE_ZORDER);

}

注意我们通过getObjectGroup方法来获得对象层,它返回一个特殊的TMXObjectGroup对象。

然后我们调用TMXObjectGroup的方法来获取一个ValueMap,这Map里包含了关于对象的大量信息,包括我们上面用的x和y的坐标值,还有宽度和高度等,如果我们是设置位置的话我们只要关心x和y就行了。

TMXObjectGroup并不是继承Node类这是要注意的,下面我们看TMXObjectGroup的一些常用的方法:

1.Value getProperty(const std::string &PropertyName); //通过属性名获得属性值

2.ValueMap getObject(const std::String &ObjectName); //通过对象层获得对象信息

3.ValueMap getProperties() //获得对象属性

4.ValueVector getObjects() //获得所有对象



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值