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

Cocos2d-X 游戏之碰撞检测的方法

2014-10-24 13:56 316 查看
// 碰撞检测 第一种
bool
Tools::iscollision(CCSprite *sprite1,CCSprite *sprite2)
{
    CCPoint point1 =sprite1->getPosition();
    CCPoint point2 =sprite2->getPosition();
    CCSize point1Size=  sprite1->getContentSize();
    CCSize point2Size=  sprite2->getContentSize();
    if(abs(point1.x-point2.x) <=point1Size.width/2
+point2Size.width/2&&abs(point1.y-point2.y) <=point1Size.height/2
+point2Size.height/2)
        return
true;
    return
false;
}
// 碰撞检测 第2种
bool GameLayer::pengLeft(CCRectbirdBox, CCRect barbox)
{
    CCPoint targetPoint =ccp(birdBox.getMinX(), birdBox.getMidY());
    returnbarbox.containsPoint(targetPoint);
}

//碰撞检测 第3种

 bool AA::iscallision(CCSprite*mysprite,CCSprite *testsprite)

 

{

 

   CCRect myrect=mysprite->boundingBox();

    CCRect testrect=testsprite->boundingBox();

 return myrect.intersectsRect(testrect);

}

//碰撞检测第三种

//是否碰撞
boolHaiGameLayer::isCollsion(CCSprite *sp1,CCSprite
*sp2)
{
    CCRect myRect =
getRect(sp1);
    CCRect testRect =
getRect(sp2);
    return  myRect.intersectsRect(testRect);
}
//获取精灵的rect
CCRectHaiGameLayer::getRect(CCSprite *sprite)
{
    CCSize s = sprite->getContentSize();
    CCPoint p = sprite->getPosition();
    CCPoint ap = sprite->getAnchorPoint();
    CCRect rect =
CCRectMake( p.x - ap.x * s.width
, p.y - ap.y * s.height,s.width,
s.height);
    return rect;
}
 //碰撞检测
voidHaiGameLayer::tection()
{
    for(int i=0;i<fishArray->count();i++)
    {
        CCSprite *s=(CCSprite *)fishArray->objectAtIndex(i);
        if(isCollsion(sp1,
s))
        {
            CCLog("shibai");
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息