#objective-c #collision-detection
#objective-c #обнаружение столкновения
Вопрос:
У меня есть следующий код:
(bool)Point:(CGPoint)point isInRectangle:(CGRect)rect
{
int rectx1 = rect.origin.x;
int recty1 = rect.origin.y;
int rectx2 = rect.origin.x rect.size.width;
int recty2 = rect.origin.y rect.size.width;
int pointx = point.x;
int pointy = point.y;
return (pointx >= rectx1 amp;amp; pointx <= rectx2) amp;amp; (pointy >= recty1 amp;amp; pointy <= recty2);
}
Предполагается, что он обнаруживает столкновение между двумя прямоугольниками, но я не получаю правильное значение. Кто-нибудь может мне помочь?
Ответ №1:
Почему бы просто не использовать встроенные функции геометрии?
CGRect CGRectContainsPoint(CGRect rect, CGPoint pt);
CGRect CGRectIntersectsRect(CGRect rect1, CGRect rect2);
Для этого они и существуют. 🙂 Документы для этих и многих других полезных функций по адресу: http://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CGGeometry/Reference/reference.html
Ответ №2:
Я думаю, что здесь:
int recty2 = rect.origin.y rect.size.width;
вы, вероятно, имели в виду:
int recty2 = rect.origin.y rect.size.height;
Но вы должны знать, что уже существует функция C CGRectContainsPoint (rect, точка), которая делает то, что вы хотите. Поэтому вам не нужно писать его, если вы этого не хотите.
Ответ №3:
Одна из этих строк должна иметь высоту, а не ширину.
int rectx2 = rect.origin.x rect.size.width; int recty2 = rect.origin.y rect.size.width;