[c++]
bool CCRect::CCRectIntersectsRect(const CCRect& rectA, const CCRect& rectB)
{
return !(CCRectGetMaxX(rectA) < CCRectGetMinX(rectB)||
CCRectGetMaxX(rectB) < CCRectGetMinX(rectA)||
CCRectGetMaxY(rectA) < CCRectGetMinY(rectB)||
CCRectGetMaxY(rectB) < CCRectGetMinY(rectA));
}
bool CCRect::CCRectIntersectsRect(const CCRect& rectA, const CCRect& rectB)
{
return !(CCRectGetMaxX(rectA) < CCRectGetMinX(rectB)||
CCRectGetMaxX(rectB) < CCRectGetMinX(rectA)||
CCRectGetMaxY(rectA) < CCRectGetMinY(rectB)||
CCRectGetMaxY(rectB) < CCRectGetMinY(rectA));
}
下列实现函数中必不可少的就是下面求最大值的-1,如果漏了会出现碰撞检测错误判断:
[c++]
CGFloat CCRect::CCRectGetMinX(const CCRect& rect)
{
return rect.origin.x;
}
CGFloat CCRect::CCRectGetMaxX(const CCRect& rect)
{
return rect.origin.x + rect.size.width - 1;
}
CGFloat CCRect::CCRectGetMinY(const CCRect& rect)
{
return rect.origin.y;
}
CGFloat CCRect::CCRectGetMaxY(const CCRect& rect)
{
return rect.origin.y + rect.size.height - 1;
}