Xcode CGRect与多个CGRects碰撞?

时间:2011-05-28 00:15:27

标签: image collision hittest names

我创造了一个游戏,我的地板由多个不同高度的图像组成。(所以地板不平整) 而不是打开一百万if语句:

if(CGRectIntersectsRect(ball1.frame,floor1.frame)){ }

if(CGRectIntersectsRect(ball1.frame,floor2.frame)){ }

if(CGRectIntersectsRect(ball1.frame,floor3.frame)){ }

if(CGRectIntersectsRect(ball1.frame,floor4.frame)){ }

//等等......

有没有办法可以使用1 if语句检查碰撞?所有的UIImageView地板都命名为“floor1,floor2,floor3,floor4,依此类推”

谢谢!

旁注: 如果我想使用CGRectIntersect代码并且我旋转图像我正在检查交叉点,因为它似乎仍然只检查图像帧的碰撞,所以我旋转或不旋转它在同一点碰撞。我是否可以旋转框架来解决这个问题,或者我是否需要使用不同的代码,如果有的话代码是什么?

2 个答案:

答案 0 :(得分:2)

虽然我不太明白你的问题,但我认为我可以提供简化。 而不是命名tile floor1,floor2,...,而应该使用数组。 通过这种方式,您可以将if语句折叠为3个语句:

for (int i = 0; i < num_tiles; i++) {
    if (CGRectIntersectsRect(ball1.frame, floor[i].frame)) {
         put code here
    }
}

答案 1 :(得分:0)

绝对更改您的命名方案,item1,item2,item3永远不是正确的选项,其中有超过2或3个项目。如果必须,请说

NSMutableArray* floors = [NSMutableArray array];
[floors addObject:floor1];
[floors addObject:floor2];
[floors addObject:floor3];
... etc

在No One In Particular建议的代码之前。