我正在使用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);
}
}