我正在制作一个游戏,其中当 2 个对象(对象 A 和 B)发生碰撞时,游戏结束。每次调用 update 时,对象 A 的位置都会发生变化。对象 B 的位置是相同的。代码是:
[self enumerateChildNodesWithName"objA" usingBlock:^(SKNode *node, BOOL *stop) {
if ([objB intersectsNode:node])
{
[node removeFromParent];
[self GameOver];
}
问题是:我希望 objA 在碰撞后不会消失。因此,为此我删除了 [node removeFromParent]; ,但是因为 update 被一次又一次地调用。我的节点数量增加了,我添加的声音似乎永远不会结束。所以,我尝试的是添加:
[self performSelectorselector(pauseGame) withObject:Nil afterDelay:0.1];
-(void) pauseGame
{
self.scene.view.paused = YES;
[self performSelectorselector(gameOver) withObject:Nil afterDelay:0.1];
}
我不得不延迟使用 performSelector ,因为将 self.scene.view.paused = YES; 放在更新中不会让我去 游戏结束 。但是,我不希望有任何延误!有没有办法做到这一点??
谢谢
Best Answer-推荐答案 strong>
只需在场景中使用一个状态变量来指示当前状态。
使用此状态对场景对象运行更新。
例如(伪代码):
update()
if (state == GAME_PLAY) {
// Update relevant game nodes
} else if (state == GAME_OVER) {
// Update only what needs to be updated when the game is over
}
这样您就不需要停止整个场景并只添加与当前游戏状态相关的内容
关于ios - self.scene.view.paused = YES 在更新中,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/23358216/
|