2 imageView ios的碰撞

时间:2014-08-02 11:18:09

标签: ios xcode ios7 sprite-kit cgrectintersectsrect

我有两张图片,我需要正确地碰撞它们。我尝试了很多解决方案,但不能正确地碰撞它们。

以下是图片

图片1 Image 1

图片2 Image 2

我尝试过CGRectIntersectsRect(),但由于图像因帧错误而在实际遇到之前发生碰撞,因此无法正常工作。请帮帮我。

我也试过使用Sprite Kit,但是对我来说很有用。

编辑1:

尝试了这段代码,但它无效或非常慢:

- (void) checkIntersectionOfRect1 :(CGRect) frame1 Rect2 : (CGRect) frame2 {

    CGAffineTransform cg1 = CGAffineTransformIdentity;
    CGMutablePathRef *cgPath1 = CGPathCreateWithRect(frame1,&cg1);

    CGAffineTransform cg2 = CGAffineTransformIdentity;
    CGMutablePathRef *cgPath2 = CGPathCreateWithRect(frame2,&cg1);

    ANPathBitmap * bm1 = [[ANPathBitmap alloc] initWithPath:cgPath1];
    ANPathBitmap * bm2 = [[ANPathBitmap alloc] initWithPath:cgPath2];

    [bm1 generateBitmap];
    [bm2 generateBitmap];

    ANPathIntersection * intersection = [[ANPathIntersection alloc] initWithPathBitmap:bm1                                                                        anotherPath:bm2];

    if ([intersection pathLinesIntersect:&CGPointZero]) {
        NSLog(@"intersect");
        [self endGame];
    }
    else {
        NSLog(@"No intersection");
    }
}

请有人帮忙。

2 个答案:

答案 0 :(得分:1)

这是两个图像发生冲突的示例,crow1和crow2是两个uiimage,它们将相互碰撞。

NODE_ENV=production pm2 start npm --name api -- start

答案 1 :(得分:0)

嗯,我不确定但是。我检查了你的图像,然后将它们下载到我的Mac上。  它们是透明的,因此在您的实际图像之前的任何空间都是透明的,您无法看到,如果它碰到将触发碰撞的图像。

Step 1:

可以肯定的是,将图像视图的背景颜色设置为突出的颜色(如蓝色),并查看问题发生的位置。然后你需要使用预览并切掉一些空格,直到它精确到边缘点。

Step 2 :

或者将图片视图的视图更改为,重绘。这将使您的图像适合您的图像视图。你的代码看起来很好。

Step 3 :

或者您可以使用NSTimer并将时间设置为0.0001,并创建一个if语句。

//Try my methods, I'm pretty sure it  is not to do with your code but I am not a professional and maybe it is. You never know. 

你会知道这一点,你的代码非常复杂,因为你可以用更简单的方式完成它。如果您有任何问题,请询问!谢谢!