当前位置:编程学习 > wap >>

cocos2d-x:矩形碰撞

 在游戏开发中,碰撞检测的矩形碰撞十分的常见。以下是cocos2d-x的矩形碰撞检测算法:

[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;  
}  

 

补充:移动开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,