2016-07-01 1 views
0

Suivi quelques autres messages comme this one mais pour une raison quelconque, ne fonctionnent pas correctement pour mon cas. Est-ce que quelqu'un peut m'expliquer pourquoi ou qu'est-ce que je fais mal?Pause de mon jeu ne fonctionne pas dans Swift SpriteKit

Donc pour l'instant, j'ai un SKLabelNode qui est attaché dans le cadre au tout début de ma partie, mais avec alpha = 0. Cela dit seulement "PAUSED". L'idée est de le montrer en définissant alpha = 1 quand on appuie sur le bouton pause, et alpha = 0 lorsqu'on appuie à nouveau et que tout revient à la normale. Je pensais que ce serait une meilleure idée que de retirer et d'attacher à nouveau le même Sprite/Label encore et encore. (Sinon, laissez-moi savoir)

Voici mon code:

func showPauseModal() { 
     print("opening pause modal ", self.view!.paused) 

     if self.view!.paused { 
      self.pausedLabel.alpha = 0 
      self.unpauseGame() 
     }else{ 
      self.pausedLabel.alpha = 1 
      self.pauseGame() 
     } 
    } 

Et puis ce sont des fonctions pauseGame() et unpauseGame()

func pauseGame() { 
     let delay = SKAction.waitForDuration(0.5) 
     let block = SKAction.runBlock({ 
      self.view!.paused = true 
     }) 
     let sequence = SKAction.sequence([delay, block]) 

     self.runAction(sequence) 
    } 

    func unpauseGame() { 
     let delay = SKAction.waitForDuration(0.5) 
     let block = SKAction.runBlock({ 
      self.view!.paused = false 
     }) 
     let sequence = SKAction.sequence([delay, block]) 

     self.runAction(sequence) 
    } 

Ainsi, la première fois que je presse la bouton de pause sur l'écran, il fait une pause et ajoute l'étiquette PAUSED. Quand je l'appuie de nouveau, la pause n'abandonne jamais l'étiquette, bien que j'essaie de vérifier qu'elle entre dans la fonction unpauseGame. Alors, qu'est-ce qui ne va pas?

Merci d'avance.

Répondre

1

Je ne pense pas que runAction sera exécuté tant que le jeu est en pause. Essayez simplement

func unpauseGame() { 
    self.view!.paused = false 
} 
+0

Ohh vous aviez raison! Merci. Je vais vous mettre en tant que solveur. Mais j'ai un autre doute. J'ai des corps physiques dans mon jeu, si je répare le jeu juste avant de faire une pause, comme je suis vraiment rapide, chaque fois que je reviens au jeu, tous les corps sont dans le sol, au lieu de rester là où ils étaient avant de faire une pause. Maintenant, si j'attends par exemple 5 secondes, ils resteront au même endroit, savez-vous pourquoi? – msqar

+0

La suspension de la vue n'interrompt pas la physique. Vous pouvez mettre en pause la physique avec scene.physicsWorld.speed = 0 –

+0

Et puis, quand je relancerai le jeu, tout redeviendra normal? ou dois-je redéfinir la vitesse? – msqar