我正在用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
谢谢你它的工作! –