扫描tilemap并检查每个tile的属性

时间:2011-02-04 03:36:14

标签: cocos2d-iphone tiles

如何迭代tilemap并检查每个tile?

有没有正确的方法,cocos2d中是否有内置函数来检查磁贴?

或者可以这样做,例如在创建图块时设置图块大小,创建一个嵌套的for循环并将(x,y)作为第一个图块的中间部分,然后通过将tileize添加到内部循环上的x并将其tileize到外部的y来迭代循环?

我想知道是否有内置的,更具有性能意识的方法。

由于

2 个答案:

答案 0 :(得分:1)

我认为你可以使用for循环和CGPoints来做到这一点。 我要举例来说明白了 并将其存储在一个数组中我猜

CGPoint myPt;
NSMutableArray *tilesofGray;

for (int x = 0; x < tilemapLength)
    {

        for (int y = 0; y < tilemapHeight)
            {
                myPt.x = x;
                myPt.y = y;

                if([[[tilemap layerNamed:@"background"] tileAt:myPt] getColor] == Grey)
                {
                    [tilesofGray addObject:[[tilemap layerNamed:@"background] tileAt:myPt]];
                 }
            }
    }

答案 1 :(得分:-2)

这适用于游戏,类似碰撞检测,还是仅仅基于图块类型进行渲染?

你的问题真的很模糊。请具体说明你想要的。如果你解释一下你需要什么,第三句话会更有意义。

但我会尝试单独根据标题回答......

  • 瓷砖有多大?如果它不是很大,那么蛮力可能会非常好。
  • 如果性能是一个问题/问题,或者如果图块集很大并且在任何给定时间都没有在屏幕上绘制所有图块,则需要进行某种场景管理。

场景管理: 我认为有一个技术术语/短语,但基本上是基于tileset(即矩阵)上的一些x,y pt,你可以确定(通过一个函数)你将需要迭代哪些tile。弄清楚它应该很有趣,因为它可能是一个二维阵列。