【1】矩形的碰撞:
1:方法一
//利用intersectsRect函数检测碰撞
if(sp1->boundingBox().intersectsRect(sp2->boundingBox())){
pLabel->setString("碰撞拉!");
}else{
pLabel->setString("~还米有碰撞~");
}
2:方法二
// 最容易想到的方法,利用计算的方法来计算是否碰撞
bool HelloWorld::isRectCollision(CCRect rect1,CCRect rect2){
float x1 = rect1.origin.x;
float y1 = rect1.origin.y;
float w1 = rect1.size.width;
float h1 = rect1.size.height;
float x2 = rect2.origin.x;
float y2 = rect2.origin.y;
float w2 = rect2.size.width;
float h2 = rect2.size.height;
if(x1+w1*0.5<x2-w2*0.5){
returnfalse;
}else if(x1-w1*0.5>x2+w2*0.5){
returnfalse;
}else if(y1+h1*0.5<y2-h2*0.5){
returnfalse;
}else if(y1-h1*0.5>y2+h2*0.5){
returnfalse;
}
returntrue;
}
【二】圆形的检测碰撞根据两个球的中点距离跟两个求的半径和做比较
bool HelloWorld::isCircleCollision(CCPoint pos1,float radius1,CCPoint pos2,float radius2){
if(sqrt(pow(pos1.x-pos2.x,2)+pow(pos1.y-pos2.y,2))>radius1+radius2){
return false;
}
return true;
}