您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x学习笔记番外篇03:坑爹的矩形碰撞

2012-01-11 20:02 459 查看
在写炸弹人那个例子时,发现了一个问题,按道理说,主角已经躲开了炸弹爆炸区域,但仍然给炸死了。如图:





我们找到计算矩形相交的代码

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

然后我们随便打开一个函数

CGFloat CCRect::CCRectGetMaxX(const CCRect& rect)
{
return rect.origin.x + rect.size.width;
}

问题找到了,比如,我声明一个x=0,y=0,w=10,h=10的矩形

那么他的四个极限位置应该是

minX=x

minY=y

maxX=x+w-1

maxY=y+h-1

但是他这里没有-1。所以造成最后结果大了一个点。这个问题,大家尤其要注意。所以在声明的时候,要自己-1,比如上面的矩形就要声明为:

0,0,9,9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x 矩形碰撞