cocos2d-x 检测碰撞

【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;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值