// 两个矩形的碰撞检测,主要看boundingbox是否接触
Rect rc1 =_spriteAuto->getBoundingBox();
Rect rc2 =_spriteCtrl->getBoundingBox();
if(rc1.intersectsRect(rc2))则认为碰撞
// 两个圆的碰撞检测,看圆心距离
Point pt1 =_spriteAuto->getPosition();
Point pt2 =_spriteCtrl->getPosition();
Rect rc1 =_spriteAuto->getBoundingBox();
Rect rc2 =_spriteCtrl->getBoundingBox();
float r2 = rc1.size.width/ 2 + rc2.size.width / 2;
float dist =pt2.getDistanceSq(pt1);
if (dist < r2*r2)则认为碰撞
碰撞的高效算法:将矩形分块,只判定个块的情况,要比整个的好一些(防止连续碰撞)。
总结:矩形和矩形(Rect::intersectsRect(Rect))
矩形和圆(Rect::intersectsCircle(Vec2-圆心,float-半径))
矩形和点(Rect::containsPoint(Vec2))
点和圆:圆心半径距离
圆和圆:圆心半径是否小于半径之和
线段:ccpSegmentIntersect()参数是4个Vec2,表示2个线段