Обнаружение столкновения прямоугольника и круга
Я пытаюсь сделать обнаружение столкновения между прямоугольником и кругом. Я придумал этот метод:
-(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];
}
Похоже, это работает правильно на стороне прямоугольника, но это не выше или ниже его. Сверху и снизу столкновение происходит слишком рано.
Есть ли способ, которым я могу правильно определить это столкновение? Спасибо за помощь.