Cocos2d-x 3.x游戏开发之旅---(TMXMap的操作)

来源:互联网 发布:黄金白银行情软件 编辑:程序博客网 时间:2024/06/06 01:05

《TMXTiledMap》
1 TMXTiledMap * map = TMXTiledMap::create(“Map.tmx”);
创建地图,注意一点 在Map.tmx 中使用到的图片要用相对路径:
这里写图片描述
这里用到的图片不要带路径。
2 地图可以加入到layer中,玩家可以加入到地图当中。
3 添加对象层,并绘制对象在地图中的位置:
这里写图片描述
TMXObjectGroup* objGroup = map->getObjectGroup(“objects”);
ValueMap playerPointMap = objGroup->getObject(“PlayerPoint”);
float playerX = playerPointMap.at(“x”).asFloat();
float playerY = playerPointMap.at(“y”).asFloat();
4 获取地图中每一块的坐标(x, y)
这里写图片描述
地板砖的坐标从左上角开始
坐标是从左下角开始
Point Player::tileCoordForPosition(Point pos)
{
Size mapTiledNum = m_map->getMapSize(); //获取地图的长宽
Size tiledSize = m_map->getTileSize(); //获取地板砖的长宽
int x = pos.x / tiledSize.width;
int y = (700 - pos.y) / tiledSize.height; //因为y轴颠倒,所以这样算,700为高
if (x >= mapTiledNum.width){x -= 1;}
if (y >= mapTiledNum.height){y -= 1;}
return Point(x, y);
}
根据xy获取格子的GID:
TMXLayer* meta = map->getLayer(“meta”); // 获取地图的某一层
int titleGid = meta->getTileGIDAt(tiledPos); //位置对应INDEX
Value properties = m_map->getPropertiesForGID(titleGid);//获取属性,这是个MAP
ValueMap propertiesMap = properties.asValueMap();
//MAP中是否有”Collidable”属性
if (propertiesMap.find(“Collidable”) != propertiesMap.end())
{
//如果有”Collidable”属性,获取值,值都是string类型的
Value prop = propertiesMap.at(“Collidable”);
if (prop.asString().compare(“true”) == 0)
{
………………..
}
}
根据XY删除格子:
TMXLayer* barrier = m_map->getLayer(“barrier”);
barrier->removeTileAt(tiledPos);

阅读全文
0 0
原创粉丝点击