两个图像碰撞时如何生成结束屏幕?

时间:2011-04-30 10:52:36

标签: objective-c ios collision-detection

当两个图像发生碰撞时如何生成结束屏幕。我正在制作一个带有一个火柴人的应用程序,你用一个非常灵敏的重量计。因此,如果它击中这些尖峰,(UIImages)它将生成结束屏幕。如何让应用程序检测到此碰撞,然后生成结束屏幕。

2 个答案:

答案 0 :(得分:0)

我确定你知道这两张图片的矩形,因为你需要绘制它们才能使用

bool CGRectIntersectsRect (
   CGRect rect1,
   CGRect rect2
);

如果两个rects具有共享点

,则返回YES

答案 1 :(得分:0)

您尚未宣布任何要求并不重要。你需要rects进行碰撞检测。我假设你至少拥有火柴人的x和y坐标,你应该对他的身高和宽度有一些了解。从问题标题来看,您似乎正在使用图像绘制要检查碰撞的对象,因此您应该知道正在使用的图像的高度和宽度。如果您没有此信息,则无法在正确的位置绘制对象,并且您当然无法检查是否存在碰撞。

您基本上想要使用与绘制对象相同的rects。

一些代码示例:

如果您的坐标指向火柴人的中间,您将使用以下内容:

if (CGRectIntersectsRect(CGRectMake(stickman.x-stickman.width/2,
                                    stickman.y-stickman.height/2,
                                    stickman.width,
                                    stickman.height),
                         CGRectMake(spikes.x-spikes.width/2,
                                    spikes.y-spikes.height/2,
                                    spikes.width,
                                    spikes.height))) {
    // Do whatever it is you need to do. For instance:
    [self showEndScreen];
}

如果您的坐标指向火柴人的左上角,您将使用:

if (CGRectIntersectsRect(CGRectMake(stickman.x,
                                    stickman.y,
                                    stickman.width,
                                    stickman.height),
                         CGRectMake(spikes.x,
                                    spikes.y,
                                    spikes.width,
                                    spikes.height))) {
    // Do whatever it is you need to do. For instance:
    [self showEndScreen];
}

如果我可以给你一个建议,我建议将坐标和大小存储在CGRect中,这样你就不必在每次检查碰撞时都创建一个新的CGRect。