在 - [SKScene update:]帐户中将时间间隔计算为“暂停”状态

时间:2015-08-14 03:17:08

标签: ios objective-c timer sprite-kit

当我暂停游戏并等待一段时间,然后恢复游戏时,会立即添加一艘外星飞船。如何让游戏暂停时“计时器”不会继续?

我的代码:

@implementation GamePlayScene
-(void) didMoveToView:(SKView *)view {
               ...
    self.addAlienTimeInterval = [Util randomWithMin:10 max:25];
    self.timeSinceLastAlien = 0;
               ...
}

-(void) update:(NSTimeInterval)currentTime{
    if (!_isGamePaused){
        if (self.lastUpdateTimeInterval){
            self.timeSinceLastAlien += currentTime - self.lastUpdateTimeInterval;
        }
        if (self.timeSinceLastAlien > self.addAlienTimeInterval && !self.gameOver){
            [self addAlienShip];
            self.timeSinceLastAlien = 0;
        }
        self.lastUpdateTimeInterval = currentTime;
                ...
    }
}
@end

1 个答案:

答案 0 :(得分:2)

update:进程暂停"暂停"时,lastUpdateTimeInterval进程不会分配timeSinceLastAlien。条件为真,因此当您恢复时,lastUpdateTimeInterval会根据您第一次点击暂停按钮时看到的lastUpdateTimeInterval进行扩充。

_isGamePaused为真时,您需要不断更新currentTime - self.lastUpdateTimeInterval属性,以便时间间隔f1(x)能够反映未暂停的游戏时间。