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

cocos碰撞检测

2016-03-27 10:38 639 查看



// 两个矩形的碰撞检测,主要看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个线段
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: