Rechteck- und Kreiskollisionserkennung

Ich versuche, eine Kollisionserkennung zwischen einem Rechteck und einem Kreis durchzuführen. Ich habe mir diese Methode ausgedacht:

-(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;
    }
}

und so überprüfe ich es:

if ([self isCollidingRect:player WithSphere:blocker] == true) {
   [self playerdeathstart];
}

Dies scheint auf der Seite des Rechtecks ​​richtig zu funktionieren, aber nicht darüber oder darunter. Oben und unten tritt die Kollision zu früh auf.

Gibt es eine Möglichkeit, diese Kollision richtig zu erkennen? Danke für deine Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage