0

我创建了一个游戏,其中我有一个由多个高度不同的图像组成的地板..(所以地板不是平的)而不是打开一百万个 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 地板都被命名为“地板 1、地板 2、地板 3、地板 4,依此类推”

谢谢!

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

4

2 回答 2

2

虽然我不太明白你的问题,但我想我可以提供一个简化。而不是命名瓷砖地板1,地板2,...,你应该使用一个数组。这样,您可以将 if 语句折叠为 3 条语句:

for (int i = 0; i < num_tiles; i++) {
    if (CGRectIntersectsRect(ball1.frame, floor[i].frame)) {
         put code here
    }
}
于 2011-05-28T01:37:47.050 回答
0

绝对改变你的命名方案,item1、item2、item3 永远不是超过 2 或 3 个项目的正确选择。如果必须的话,就说

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

在没有人特别建议的代码之前。

于 2011-05-28T01:43:32.587 回答