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

// 碰撞检测 第一种

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");

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值