碰撞检测

void Game::update(float t)

{ //碰撞检测

    if (allEnemy.size()==0||allBullet.size()==0) {

        return;

    }

     auto plane=(Plane *)this->getChildByTag(110);

    //判断飞机和所有道具

    for (int j=0; j<allTool.size(); j++) {

        //得到第j架敌机

        Tool * nowtool=allTool.at(j);

        Rect br(plane->px,

                plane->py,

                plane->getChildByTag(10)->getContentSize().width,

                plane->getChildByTag(10)->getContentSize().height);

        Rect er(nowtool->tx,

                nowtool->ty,

                nowtool->sp->getContentSize().width,

                nowtool->sp->getContentSize().height);

        if (br.intersectsRect(er))

        {  //碰撞检测到2个矩形相交

            //判断吃到哪种道具

            switch (nowtool->type) {

                case 1://hp

                { plane->hp++;

                    int i=plane->hp-1;

                    auto spHp=Sprite::create("hp.png");

                    spHp->setTag(1000+i);

                    this->addChild(spHp);

                    spHp->setAnchorPoint(Vec2(0,1));

                    spHp->setPosition(Vec2(i*spHp->getContentSize().width+3*i,Director::getInstance()->getWinSize().height));

                }break;

                case 2://boom

                   {//所有敌机都销毁

                       while(allEnemy.size()>0) {

                           //得到第j架敌机

                           Enemy * nowEnemy=allEnemy.at(0);

                           Boom * boom=Boom::createBoom(2, nowEnemy->ex, nowEnemy->ey);

                           this->addChild(boom,10);

                           //增加分数

                           this->m_score+=300;

                           allEnemy.eraseObject(nowEnemy);

                           nowEnemy->removeFromParentAndCleanup(true);

                          

                       }

             

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值