1.瓦片地图
就我个人理解所谓瓦片地图即由许多地图砖块拼成的整体的地图,这样的好处就是对不同地貌的地图块可以设置不同的属性,比如墙壁和河流显然是不能直接穿过的,而整体的地图显然要设置这样的属性就显得非常的麻烦。
2.制作瓦片地图
我是采用Tield,下面是一张960x640的瓦片地图
3.加载瓦片地图
cocos2dx提供了TMXTiledMap类加载瓦片地图,具体代码如下:
const auto mapLayer = TMXTiledMap::create("GameMap.tmx");
mapLayer->setPosition(Vec2(124, 0));
this->addChild(mapLayer);
const char* layers[] = { "wall","enemytype1","enemytype2","enemytype3","door","key","hp" };
for (int k = 0; k < 7; k++)
{
const auto layer = mapLayer->getLayer(layers[k]);
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 20; j++)
{
auto layerSprite = layer->getTileAt(Vec2(i, j));
if (layerSprite)
{
layerSprite->setTag(k + 1);
const auto spriteBody = PhysicsBody::createBox(Size(32, 32), PhysicsMaterial(0.0f, 0.0f, 0.0f));
if (k != 0)
{
spriteBody->setContactTestBitmask(1);
}
spriteBody->setDynamic(false);
layerSprite->setPhysicsBody(spriteBody);
}
}
}
}
前三行为一般的地图加载代码,后面的代码用于对不同类型的瓦片设置属性。