我正在使用SpriteKit制作游戏。 我正在检查播放器是否在更新方法中死了,如下所示:
-(void)update:(CFTimeInterval)currentTime
{
if (self.player.dead) {
[self gameOver];
}
}
gameOver
方法如下:
-(void)gameOver {
SKView * skView = (SKView *)self.view;
GameOverScene *gameOver = [GameOverScene sceneWithSize:skView.bounds.size];
gameOver.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:gameOver transition:[SKTransition doorsOpenHorizontalWithDuration:1.0]];
}
由于某种原因,没有呈现GameOver
场景,而是继续调用当前屏幕的更新方法。我做错了什么?
答案 0 :(得分:1)
我认为问题可能是 self.player.dead 标志在更新方法内反复评估 YES ,多次致电 [self gameOver] ,由于1秒的持续时间,从未实际完成转换;您可以使用断点或日志记录轻松测试。在呈现新场景之前,请尝试在 - (void)gameOver 方法中调用 self.player.dead = NO 。
答案 1 :(得分:0)
尝试以下操作,看看它是否有所作为:
- (void)gameOver {
SKScene *gameOver = [[GameOverScene alloc] initWithSize:self.size];
SKTransition *doors = [SKTransition doorsOpenVerticalWithDuration:1.0];
[self.view presentScene:gameOver transition:doors];
}
另外,请确保从当前场景调用gameOver。