我创造了一个游戏,我的地板由多个不同高度的图像组成。(所以地板不平整) 而不是打开一百万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代码并且我旋转图像我正在检查交叉点,因为它似乎仍然只检查图像帧的碰撞,所以我旋转或不旋转它在同一点碰撞。我是否可以旋转框架来解决这个问题,或者我是否需要使用不同的代码,如果有的话代码是什么?
答案 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建议的代码之前。