2016-07-01 13 views
0

Gefolgt ein paar andere Beiträge wie this one, aber aus irgendeinem Grund, funktionieren nicht richtig für meinen Fall.Anhalten mein Spiel funktioniert nicht in Swift SpriteKit

Kann mir jemand erklären warum oder was mache ich falsch?

Also, jetzt habe ich einen SKLabelNode, der im Rahmen zu Beginn meines Spiels angebracht ist, aber mit Alpha = 0. Das sagt nur "PAUSED". Die Idee ist es zu zeigen, indem Alpha = 1 gesetzt wird, wenn die Pause-Taste gedrückt wird, und Alpha = 0, wenn erneut gedrückt wird und alles wieder normal wird. Ich dachte, es wäre eine bessere Idee, als das gleiche Sprite/Label immer wieder zu entfernen und wieder anzubringen. (Wenn nicht, lassen Sie mich wissen)

Hier ist mein 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() 
     } 
    } 

Und dann sind pauseGame() und unpauseGame() -Funktionen

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) 
    } 

Also, das erste Mal, dass ich die Taste Pausebutton auf dem Bildschirm, es pausiert und fügt das PAUSED-Label hinzu. Wenn ich es erneut drücke, verschwindet die Pause nicht, auch nicht das Etikett, obwohl ich überprüfe, dass es in die Funktion "unpauseGame" gelangt. Also, was ist falsch?

Vielen Dank im Voraus.

Antwort

1

Ich glaube nicht, runAction wird ausgeführt, während das Spiel pausiert ist. Versuchen Sie einfach

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

Ohh Sie hatten Recht! Vielen Dank. Ich werde dich als den Löser setzen. Aber ich habe noch einen Zweifel. Ich habe ein paar Physikkörper in meinem Spiel, wenn ich das Spiel kurz vor dem Pausieren pausiere, so schnell wie möglich, wenn ich zurück zum Spiel gehe, sind alle Körper in der Erde, anstatt zu bleiben, wo sie waren, bevor sie pausierten. Nun, wenn ich zum Beispiel 5 Sekunden warte, bleiben sie am selben Ort, weißt du warum? – msqar

+0

Das Anhalten der Ansicht hält die Physik nicht an. Sie können die Physik mit scene.physicsWorld.speed = 0 –

+0

pausieren Und dann, wenn ich das Spiel pausiere, wird alles wieder normal? oder muss ich die Geschwindigkeit erneut einstellen? – msqar