2016-07-01 7 views
0

this oneのようないくつかの投稿の後に、何らかの理由で、私のケースで正しく動作していません。Swift SpriteKitでゲームを一時停止する

誰でも私のことを説明することができますか、何が間違っていますか?

今のところ、私はゲームの冒頭でフレームにアタッチされているアルファ= 0のSKLabelNodeを取得しました。これは「PAUSED」としか言いません。 ポーズボタンを押すとアルファ= 1に設定し、もう一度押すとアルファ= 0にして、すべてが元に戻ります。 同じスプライト/ラベルを何度も取り除いてからやり直すよりも良いアイデアだと思っていました。 (ない場合は、私に知らせて)

は、ここに私のコードです:

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

そしてこれらはpauseGame(あり)と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) 
    } 

を機能します一時停止ボタンを押すと、PAUSEDラベルが一時停止して追加されます。私はもう一度それを押すと、ポーズは決してunpauseGame機能の中に入っているかどうかをチェックしていますが、どちらのラベルも消えません。だから何が問題なの?

ありがとうございます。

答えて

1

ゲームが一時停止中にrunActionが実行されるとは思わない。簡単に試してみてください

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

オハイオ州は正しくありました。ありがとう。私はあなたをソルバーに入れます。しかし、もう一つの疑問がある。私はゲームの中でいくつかの物理的な体を持っています。一時停止する直前にゲームを一時停止した場合、本当に速く、ゲームに戻るたびに、一時停止する前のすべての体が地面にいます。さて、もし私が5秒待っていれば、彼らは同じ場所にとどまります、なぜあなたは知っていますか? – msqar

+0

ビューを一時停止しても物理を一時停止しません。 scene.physicsWorld.speed = 0 –

+0

で物理を一時停止することができます。そして、ゲームをポーズ解除すると、すべて正常に戻りますか?または私は再び速度を設定する必要がありますか? – msqar

関連する問題