我正在用cocos2D做一個小遊戲,在那裏你可以用加速度計操縱一艘船,並通過點擊屏幕擊落事情。你擊落的東西由CCMoveTo控制,CCMoveTo將它們從屏幕的頂部移動到0以下。如果船隻與其中一個飛行物相撞,它們將停止產卵並且所有其他時間表都會暫停。出現「暫停屏幕」。被刪除的精靈仍然似乎存在 - cocos2D
代碼:
for (CCSprite *sprite in _flyingObjects)
{
if (CGRectIntersectsRect(_ship.boundingBox, _sprite.boundingBox))
{
[sprite removeFromParentAndCleanUp:YES];
[self pauseSchedulerAndActions];
CCMenuItem *resumeMenuItem = [CCMenuItemImage itemWithNormalImage:@"resume.gif" selectedImage:@"resume.gif" target:self selector:@selector(resumeButtonTapped:)];
resumeMenuItem.position = ccp(150, 190);
}
}
- (void)resumeButtonTapped:(id)sender
{
[self removeChild:resumeMenuItem];
[self resumeSchedulerAndActions];
}
的飛行物體是隨機生成的在x軸的相同y值每隔1秒。
我的問題是,當_ship與飛行物體碰撞時,屏幕上彈出菜單與resumeButton,如果我點擊resumeButton它刪除,因爲它應該,但只有一個1/100秒,然後選擇菜單再次加載。
這意味着CGRectIntersecsRect()
檢測到碰撞,即使我有removeAndCleandUp
它之前應該刪除,然後當點擊resumeButton,他們應該開始產卵在頂部,而不是左側看不見,並與船相撞。這是什麼造成的?
抱歉有一個錯誤的公式化問題,請問是否不清楚。提前致謝!
實際上,當你通過[_flyingObjects reverseObjectEnumerator]向後枚舉時,你可以改變數組,並且只刪除當前對象或任何已經枚舉的對象。 – LearnCocos2D
謝謝你它的工作! –