当您的播放器与某个对象碰撞时,我很难弄清楚如何更改视图控制器。
我想弹出一个显示菜单按钮和重播按钮的菜单,所以现在还不重要的其他按钮也是如此。我不确定游戏菜单的某些部分是如何制作的,我正在考虑切换视图控制器,如果您确切知道它们的制作方法,请告诉我。
这是我目前的代码,它唯一要做的就是显示游戏结束的标签,点击该标签后,游戏将重新启动:
import Foundation
import AVFoundation
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var movingGround: PPMovingGround!
var square1: PPSquare1!
var wallGen: PPWallGen!
var diamondGen: PPDiamondGen!
var isStarted = false
var isGameOver = false
var isDiamondContact = false
var playerNode: SKNode!
override func didMoveToView(view: SKView) {
//code that is not important was deleted
func collisionWithDiamond() {
isDiamondContact = true
}
func restart() {
let newScence = GameScene(size: view!.bounds.size)
newScence.scaleMode = .AspectFill
view!.presentScene(newScence)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if isGameOver {
restart()
} else {
square1.flip()
}
}
override func update(currentTime: CFTimeInterval) {
}
// MARK: - SKPhysicsContactDelegate
func didBeginContact(contact: SKPhysicsContact) {
if !isGameOver {
gameOver()
} else {
!isDiamondContact
collisionWithDiamond()
}
}
注意:我删除了不相关或不必要的代码。
更新:
链接到游戏的玩法:https://www.youtube.com/watch?v=WUibTETfEQY
跳到2:32在屏幕上查看游戏
通过屏幕链接到游戏图像:Image
(由于无法获得所需的10个代表点,我无法在此处发布图片。)
最佳答案
//编辑的答案
这将是最简单的。创建一个新的GameOverScene.swift,它是一个SKScene。然后使用背景图像(按钮的SKLabelNodes)自定义该场景。结帐creating buttons in skview to point to different scenes
当游戏在GameScene中结束时,
let gameOverScene: GameOverScene = GameOverScene(size: self.size)
self.view!.presentScene(gameOverScene, transition: SKTransition.doorsOpenHorizontalWithDuration(1.0))
这是一个已实现此功能的项目http://www.raywenderlich.com/76741/make-game-like-space-invaders-sprite-kit-and-swift-tutorial-part-2
//第一个答案---------------------------------------------- --
如果要切换viewController,则必须像这样或使用segue呈现新的viewController,
self.view?.window?.rootViewController?.presentViewController(newView, animated: true, completion: nil)
self.view?.window?.rootViewController?.performSegueWithIdentifier("id", sender: AnyObject)
否则,创建一个SKView并添加按钮,然后在游戏结束时将其添加到场景中,或者在添加之前将其隐藏,显示出来。用户选择一个选项后,将其删除或隐藏,
SKView.hidden = false
SKView.hidden = true
添加SKView,
self.view?.addSubview(SKView)
简单的SKView叠加层,
let view1 = SKView(frame: CGRectMake(0, 0, 200, 200))
view1.center = self.view!.center
self.view?.addSubview(view1)