2014-02-18 33 views
2

我無法弄清楚這一點。我有一個遊戲,玩家在從天上掉落時必須抓到漿果。當玩家錯過一次時,我希望屏幕閃爍紅色,漿果停止下落,並讓遊戲暫停3秒,然後恢復。Sprite套件在失去生命時暫停遊戲

@interface SpriteMyScene : SKScene{ 
    SKAction *sceneUnPaused; 
    SKAction *scenePaused; 
} 

2種方法暫停遊戲。

-(SKAction*)unpaused { 
    sceneUnPaused = [SKAction runBlock:^{ 
     self.scene.view.paused = NO; 
    }]; 
    return sceneUnPaused;} 

    -(SKAction*)paused{ 
       scenePaused = [SKAction runBlock:^{ 
     self.scene.view.paused = YES; 
    }]; 
    return scenePaused; 
} 

創建漿果及其動作的方法。

- (void)addBerry { 
... 
... 
// Create the actions 
//For each individual berry 
SKAction * actionMove = ... 
SKAction * gameWon = ... 
SKAction * actionMoveDone = ... 

SKAction *wait3Seconds = [SKAction waitForDuration:3]; 
SKAction * loseAction = [SKAction runBlock:^{ 
    [self subtractLives]; 
    NSLog(@"Lost a life"); 
    [self vibrate]; 
    [self runAction:scenePaused]; 
    [self runAction:wait3Seconds]; 
    [berry removeFromParent]; 
    [self runAction:sceneUnPaused]; 

    if (_playerLives == 0){ 
     [[SoundManager sharedManager] stopMusic]; 
     SKTransition *reveal = [SKTransition fadeWithDuration:1.0]; 
     SKScene * gameOverScene = [[GameOverScene alloc] initWithSize:self.size andScore:_berriesKilled]; 
     [self.view presentScene:gameOverScene transition: reveal];}}]; 

SKAction *berrie = [SKAction runBlock:^{ 
     [berry runAction:actionMove];}]; 

[berry runAction:[SKAction sequence:@[berrie, gameWon, actionMove, loseAction, actionMoveDone]]]; 

}

我不知道這是否是必要或不適合你們幫我弄清楚爲什麼它不會工作,但這裏要說的是,當我將決定更新方法產卵漿果。

- (void)updateWithTimeSinceLastUpdate:(CFTimeInterval)timeSinceLast { 

self.lastSpawnTimeInterval += timeSinceLast; 

if (self.lastSpawnTimeInterval > [self determineAmountOfBerries]) { 
self.lastSpawnTimeInterval = 0; 
[self addBerry]; 

} 

}

回答

1

當玩家錯過了漿果,只是這樣做:

[self.scene.view setPaused:YES]; 

啓動一個NSTimer,做以下3秒後:

[berry removeFromParent]; 
[self.scene.view setPaused:NO];