我正在尝试在矩形和圆形之间进行碰撞检测。我想出了这种方法:

-(BOOL) isCollidingRect:(CCSprite *) spriteOne WithSphere:(CCSprite *) spriteTwo {
    float diff = ccpDistance(spriteOne.position, spriteTwo.position);
    float obj1Radii = [spriteOne boundingBox].size.width/2;
    float obj2Radii = [spriteTwo boundingBox].size.width/2;
    if (diff < obj1Radii + obj2Radii) {
        return YES;
    } else {
        return NO;
    }
}

这是我检查的方式:
if ([self isCollidingRect:player WithSphere:blocker] == true) {
   [self playerdeathstart];
}

这似乎可以在矩形的一侧正常工作,但不在矩形的上方或下方。在顶部和底部,碰撞发生得太早了。

有什么办法可以让我正确检测到此冲突?谢谢您的帮助。

最佳答案

您可以使用CGRectIntersectsRect来实现。

-(BOOL) isCollidingRect:(CCSprite *) spriteOne WithSphere:(CCSprite *) spriteTwo {
    return CGRectIntersectsRect([spriteOne boundingBox],[spriteTwo boundingBox]);
}

它不是像素完美,但据我所知在这种情况下没有必要。

关于ios - 矩形和圆形碰撞检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20187316/

10-11 23:22