在两个精灵之间进行碰撞

时间:2014-07-08 10:59:09

标签: c++ xcode5 cocos2d-x

我正在使用cocos2d-x在xcode中开发游戏。我希望在两个sprite之间进行碰撞,称为spr1& SPR2。我在设备的左侧显示了spr1& spr2位于设备的右侧。我启用了触摸来移动精灵。我拖的时候在spr1上放下spr2,spr1和amp; spr2应该删除。删除后我在spr1的位置创建了spr3。同样的方式,如果我拖动&在spr2上放下spr1,spr1和amp; spr2应该删除。删除后我想在spr2的位置创建spr3。但它是在spr1的位置创造的。   我使用以下代码进行冲突。请任何人都可以帮我找到解决方案。感谢。

CCARRAY_FOREACH(_spr1, sone)
{
    CCSize size=spr1->getContentSize();
    CCSprite *spr1 = dynamic_cast<CCSprite*>(sone);
    CCRect secondrow1Rect = CCRectMake(
                                 spr1->getPosition().x - (size.width/2),
                                 spr1->getPosition().y - (size.height/2),
                                 size.width/2,
                                 size.height/2);

    CCARRAY_FOREACH(_spr2, stwo)
    {
        CCSize size1=spr2->getContentSize();

        CCSprite *spr2 = dynamic_cast<CCSprite*>(stwo);
        CCRect secondrow2Rect = CCRectMake(
                                      spr2->getPosition().x - (size1.width/2),
                                      spr2->getPosition().y - (size1.height/2),
                                      size1.width/2,
                                      size1.height/2);

        if (secondrow1Rect.intersectsRect(secondrow2Rect))
        {
            this->removeChild(spr1, true);
            this->removeChild(spr2, true);
            spr3=CCSprite::create("spr.png");
            spr3->setPosition(ccp(winwsize/3,winhsize/3));
            addChild(spr3);                
        }

    }
CCARRAY_FOREACH(_spr2, fonef)
{
    CCSize size13=spr2->getContentSize();
    CCSprite *spr2 = dynamic_cast<CCSprite*>(fonef);
    CCRect firstrow1fRect = CCRectMake(
                                       spr2->getPosition().x - (size13.width/2),
                                       spr2->getPosition().y - (size13.height/2),
                                       size13.width/2,
                                       size13.height/2);

    CCARRAY_FOREACH(_spr1, sones)
    {
        CCSize size14=spr1->getContentSize();

        CCSprite *spr1 = dynamic_cast<CCSprite*>(stwo);
        CCRect secondrow1sRect = CCRectMake(
                                            spr1->getPosition().x - (size14.width/2),
                                            spr1->getPosition().y - (size14.height/2),
                                            size14.width/2,
                                            size14.height/2);

        if (firstrow1fRect.intersectsRect(secondrow1sRect))
        {
            this->removeChild(spr1, true);
            this->removeChild(spr2, true);
            spr3=CCSprite::create("spr.png");
            spr3->setPosition(ccp(winwsize/1,winhsize/3));
            addChild(spr3);

        }
    }

0 个答案:

没有答案