2017-08-17 79 views
0

我目前正在做一个非常基本的“庞”游戏。我有应用程序正在运行,但我想添加一个游戏画面。一旦用户或计算机达到5分,我想要显示转场场景。如何从我的SKScene创建Segue到另一个UIViewController?

这是我的分数更新功能:

func addScore(playerWhoWon: SKSpriteNode) { 
    ball.position = CGPoint(x: 0, y: 0) 
    ball.physicsBody?.velocity = CGVector(dx: 0, dy: 0) 

    if playerWhoWon == main { 

     score[0] += 1 

     if score[0] >= 5 { 
      // call a function that segues to endGame() 
     } 

     let when = DispatchTime.now() + 0.7 
     DispatchQueue.main.asyncAfter(deadline: when) { 
      self.ball.physicsBody?.applyImpulse(CGVector(dx: 15, dy: 15)) 
     } 

    } else if playerWhoWon == enemy { 

     score[1] += 1 

     if score[1] >= 5 { 
      // call a function that segues to endGame() 
     } 

     let when = DispatchTime.now() + 0.7 
     DispatchQueue.main.asyncAfter(deadline: when) { 
      self.ball.physicsBody?.applyImpulse(CGVector(dx: -15, dy: -15)) 
     } 
    } 

    topLbl.text = "\(score[1])" 
    btmLbl.text = "\(score[0])" 
} 

我希望能够调用“残局”的功能,这塞格斯到“你赢了”或“你输”的UIViewController,根据结果的游戏。任何帮助非常感谢,谢谢!

回答

0

在你SKScene,声明视图控制器

var viewController: UIViewController? 

在你的故事板,创建承载您的SKScene和你的游戏在视图控制器视图控制器之间的SEGUE。给它一个标识符。

不管你想要去Segue公司,称这(更换“标识符”与您的标识符):

viewController?.performSegue(withIdentifier: "identifier", sender: viewController) 
+0

我宣布视图控制器,并创建了我的SKScene VC和我youWinVC之间的SEGUE。然后,我在我的youWin函数中发布了segue命令,该函数显示屏幕上的获胜游戏: func youWin(){ self.ball.physicsBody?.isDynamic = false viewController?.performSegue(withIdentifier:“youWinSegue”,sender: viewController) } //我试图确定segue本身和youWin视图控制器,但仍然无法工作。有什么建议么? –

+0

你可以尝试self.viewController?.performSegue(withIdentifier:“identifier”,sender:self.viewController)另外,确保你在你的代码中调用了这个函数。 –

+0

我将自我前缀添加到视图控制器,但没有效果。在我的if score> = 5语句中,我称之为youWin函数。它的工作原理是因为物理调整线(在我之前评论的segue命令中)在游戏结束时停止了球,它不会延续到新的VC。 –

相关问题