2014-06-26 160 views
-2

我是cocos2d-x的新手。我正在使用cocos2d-x在xcode中開發一款遊戲。 在我的遊戲中,我有精靈動畫(人)和移動障礙物和硬幣。我與精靈動畫&硬幣相撞。當我獲得10個硬幣時,我將添加一個生命(爲生活添加一個精靈)。我的問題是當精靈動畫(人)&障礙之間發生碰撞,生活應該減少(我的意思是生活精靈應該刪除),但它不會被刪除。 我正在使用以下代碼。在cocos2d-x中刪除一個精靈

if(coincount%10==0) 
{ 
    lifecount=lifecount+1; 
} 
if(lifecount==1) 
{ 
life = CCSprite::create("life.png"); 
life->setPosition(ccp(winwsize/2, winhsize/1.08)); 
this->addChild(life, 5); 
} 
else if(lifecount==2) 
{ 
life1 = CCSprite::create("life.png"); 
life1->setPosition(ccp(winwsize/1.8, winhsize/1.08)); 
this->addChild(life1, 5); 
} 
else if (lifecount==3) 
{ 
life2 = CCSprite::create("life.png"); 
life2->setPosition(ccp(winwsize/1.6, winhsize/1.08)); 
this->addChild(life2, 5); 
} 

if (manRect.intersectsRect(obs5Rect)) 
{ 
if(lifecount>=1) 
{ 
lifecount=lifecount-1; 
this->scheduleOnce(schedule_selector(PlayScene::remove),0.5f); 
} 

void PlayScene::remove() 
{ 
if(lifecount==0) 
{ 
    this->removeChild(life, true); 
} 
else if(lifecount==1) 
{ 
this->removeChild(life1, true); 
} 
else if(lifecount==2) 
{ 
this->removeChild(life2, true); 
} 

但是,當障礙物與精靈動畫(人)碰撞時,精靈不移除。 請任何人都可以幫助我找到解決方案。謝謝。

回答

0

我認爲最好的辦法是做:

life1->setTag(99); // i made up the 99 

,然後當你想刪除它使用removeChildByTag(99);

-1

看來問題出在你的remove函數中。當lifeCount分別爲1,2或3時,您創建精靈life, life1, life2。但在你remove方法,你是否lifeCount爲0,1或2。如果是3,沒有一個精靈會被刪除,因爲沒有條件得到滿足。你也不要在任何地方去除lifeCount

解決方案:
要麼添加--lifecount;remove()開始,還是適當地改變你的條件和減少在最後的計數器。

建議:
如果我可以建議一個improvemt到您的代碼:你應該讓你的精靈life在陣列中,這樣,當你決定要添加的可能性有更多的生命,它會容易得多。

讓我知道是否有什麼不清楚。

+0

我編輯我的問題。在調用remove函數之前,我減少了lifecount = lifecount-1。 – arunkumar

+0

那麼,這是否意味着這個建議不能解決問題?你也可以嘗試調用'life-> removeFromParentAndCleanup(true)'而不是'this-> removeChild(...)' – Losiowaty

1
First setTag on Sprite like: 
Sprite->setTag(111); 
removeChildByTag(111); 

     OR 

Sprite->removeFromParent();