我对这个方法有问题。我有两个明显包含在彼此内部的矩形(我甚至手动绘制了它们的坐标以确保其正确性)。当我使用cgrectcontainsrect比较这两个矩形时,它返回false。为了我的生命,我已经尝试了一切,搜索了网络,我找不到这个问题的答案。有人知道为什么吗?我在调试时包含了cgrect的值,以表明它们确实在彼此之间。

-(bool)checkBoundingBox {
    bool returnItem = YES;

    //Checks for sprite interaction
    for (int i = 0; i < [arrGameItems count]; i++) {
        CGRect rect2 = [[self getChildByTag:1] boundingBox];
        CGRect rect1 = [[self getChildByTag:3] boundingBox];

        //        rect1 = CGRectStandardize(rect1);
        //        rect2 = CGRectStandardize(rect2);

        if (CGRectContainsRect(rect2, rect1)) {
            CCLOG(@"removed child b*&ch");
            [self removeChildByTag:[arrGameItems count] cleanup:YES];
            returnItem = NO;
        }
    }

    CCLOG(@"g-dammit");
    return returnItem;
}

矩形1
原点X=141 Y=76,高度=25,宽度=25
矩形2
原点X=127 Y=91,高度=25,宽度=25

最佳答案

CGRectContainsRect()检查一个矩形是否完全包含另一个矩形,而不仅仅是它们是否相交。从你的坐标来看,矩形并不包含彼此,只是相交而已。您正在查找CGRectIntersectsRect()

07-27 13:15