我有一个应用程序,当你打开它时,会引导你进入主菜单,在那里你可以选择游戏的难度。按主菜单中的任意按钮,即可加载游戏场景。
我的问题基本上是现在我想要达到另一个视图控制器,它与主菜单具有相同的类,在达到条件之后,例如获得10分或类似的分数。 我怎样才能做到这一点?我使用拖放功能在故事板上做了很多工作。
我对快速编程非常陌生,如果你能就如何让它变得更好而给我一些建议会很好。
编辑:我收到了这段代码:
func addScore(playerWhoWin: SKSpriteNode){
ball.position = CGPoint(x: 0, y: 0)
ball.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
if playerWhoWin == main {
score[0] += 1
ball.physicsBody?.applyImpulse(CGVector(dx: 22 , dy: 22))
}
else if playerWhoWin == enemy {
score[1] += 1
ball.physicsBody?.applyImpulse(CGVector(dx: -22 , dy: -22))
}
topLbl.text = "\(score[1])"
btmLbl.text = "\(score[0])"
}
现在在我得到的更新功能中:
override func update(_ currentTime: TimeInterval) {
switch currentGameType {
case .easy:
enemy.run(SKAction.moveTo(x: ball.position.x, duration: 1.4))
break
case .medium:
enemy.run(SKAction.moveTo(x: ball.position.x, duration: 1.0))
break
case .hard:
enemy.run(SKAction.moveTo(x: ball.position.x, duration: 0.7))
break
case .player2:
break
}
if ball.position.y <= main.position.y - 70 {
addScore(playerWhoWin: enemy)
moveToWinScreen() // <- This is the function I'm trying to write
}
else if ball.position.y >= enemy.position.y + 70 {
addScore(playerWhoWin: main)
moveToWinScreen()
}
}
游戏本身就像它应该的那样工作,我可以输入它,选择一个难度并留下一个&#34; menue&#34;在gamescene中的按钮(我通过拖放故事板与主菜单链接)
现在我需要一个名为moveToWinScreen的函数,它应该是:
func moveToWinScreen(){
if score[0] > 9 {
//here I want to move to the UIViewController that shows you that you won. This UIViewController got the storyboard ID: mainwinVC , and has the same class as the mainmenue: MenueVC.
}
if score[1] > 9 {
//here I want to move to the UIViewController that shows you that your opponent won. This UIViewController got the storyboard ID: enemywinVC , and has the same class as the mainmenue: MenueVC.
}
}
答案 0 :(得分:1)
您必须为此创建自定义委托方法。
例如:raywenderlich sprite kit tutorial
在这个怪物游戏中,他们使用委托方法通过制作委托方法来计算怪物碰撞:
<h3>Projects </h3>
<div >
<ul class= "grid grid-pad">
<a *ngFor="let project of projects" class="col-1-4">
<li class ="module project" >
<h4 tabindex ="0">{{project.name}}</h4>
</li>
</a>
</ul>
</div>
在上面的代码中,您可以看到如果目标已实现,则将场景带到新视图。 场景上的游戏是另一个告诉分数和结果的视图。
希望这对你有所帮助。有关更多信息,您可以浏览上方链接。
答案 1 :(得分:1)
FOR VIEWCONTROLLER
1.在你的游戏类中
class GameScene: SKScene {
var viewController: UIViewController?
}
然后在GameViewController类
中 在skView.presentScene(场景)之前添加此行代码
scene.viewController = self
现在,您可以直接访问viewController。只需在此viewController上调用segue:
func returnToMainMenu(){
self.viewController.performSegueWithIdentifier("menu", sender: vc)
}
我已经实现并尝试了这段代码,它对我来说很好用