上一篇教大家了一些TileMap地图块设置的基本规则和注意事项
这一篇开始教大家些复杂的东西:
如何通过地图块的id做一些事件的判断。
这里先解释下图块的id是什么:
图块的id就是当你加载地图图片的时候通过设置图片切块的大小会把一张地图图片切成很多小块,这些小块会自动编成一个一维数组,从0开始,如下所示
第一步:首先解决第一个问题:如何获取图块id
因为图块首先是画在图层上的,所以我们先得找到对应的图层
1.
map = CCTMXTiledMap::create(
"maps/Test2.tmx"
);
2.
CCTMXLayer* walklay = map->layerNamed(
"layer0"
);
ok,现在walklay就是我们要判断地图id的图层了,通过layer0这个图层名字获得了。
跟编辑器里面的标签要对应上
好了现在得到层了,就得找对应id了。
第二步:
也很简单,如果我们想获取图层5行6列的地图块id是多少,www.it165.net
1.
CCPoint pp = ccp(
6
,
5
);
2.
unsigned
int
id = layer0->tileGIDAt(pp);
ok,现在id 就是我们得到的图块的索引值了。
想获得其他图层的其他格子上的图块索引值同理。
得到这个值能干什么呢??
举例:
1、做人物行走阻挡,比如我判断如果地图上所有索引为5的图块不能行走。
2、更换图块,比如我设置所有格子id为5的格子不显示。
。。。。
等等,根据不同的游戏我们可以有很多种的用途。
本文出自 “奶制品” 博客