cocos2dx3.x加载瓦片地图TiledMap

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);
			}
		}
	}
}

前三行为一般的地图加载代码,后面的代码用于对不同类型的瓦片设置属性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值