故障矩形碰撞代码

时间:2011-11-12 01:12:37

标签: objective-c collision-detection

我有以下代码:

+(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 && pointx <= rectx2) && (pointy >= recty1 && pointy <= recty2);
}

它应该检测两个矩形之间的碰撞,但我没有得到正确的值。谁能帮助我?

3 个答案:

答案 0 :(得分:3)

为什么不使用内置的几何函数?

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

答案 1 :(得分:1)

其中一条线应该是高度而不是宽度。

int rectx2 = rect.origin.x + rect.size.width;
int recty2 = rect.origin.y + rect.size.width;

答案 2 :(得分:1)

我想在这里:

int recty2 = rect.origin.y + rect.size.width;
你可能意味着:

int recty2 = rect.origin.y + rect.size.height;

但是,你应该知道已经有一个C函数CGRectContainsPoint(rect,point)可以做你想要的。所以除非你想要,否则你不必写一个。