我正在用 cocos2D 制作一个小游戏,您可以在其中使用加速度计驾驶一艘船并通过点击屏幕击落物体。您击落的物体由 CCMoveTo 控制,它会将它们从屏幕顶部向下移动到 0 以下。如果船与其中一个飞行物体发生碰撞,它们将停止产卵,并且所有其他时间表都将暂停。出现“暂停屏幕”。
代码:
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 轴上每隔 1 秒在相同的 y 值上随机生成。
我的问题是,当 _ship 与飞行物体发生碰撞时,菜单与 resumeButton 一起弹出,如果我单击 resumeButton,它会按原样移除但仅持续 1/100 秒,然后再次加载菜单。
这意味着CGRectIntersecsRect()
检测到碰撞,即使我removeAndCleandUp
之前有它应该删除,然后当点击 resumeButton 时,它们应该开始在顶部产卵,而不是不可见的左侧并与船相撞。这是什么原因造成的?
抱歉,提出了一个糟糕的问题,如果不清楚,请询问。提前致谢!