我想知道当角色在游戏结束时与敌人发生碰撞时如何改变场景。我在main.storyboard下创建了一个场景,我想知道如何通过代码将其连接起来,我只知道如何使用按钮将其连接起来,但这不是我想要的,因为当你死的时候你不会按下按钮带你去场景游戏。
更新:
func gameOver() {
gameDelegate?.gameDelegateGameOver(score)
let gameOverScene: GameOverScene = GameOverScene(size: self.size)
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))
这就是检测到碰撞时我对gameOver的所作所为。是的,它确实带我到了一个新的场景,但不是我在main.storyboard中制作的场景。
答案 0 :(得分:1)
你可以做的是创建一个碰撞布尔值,如果它是真的(因此,某些东西发生了碰撞),你可以在更新函数中展示一个view.presentScene(YOUR_SCENE, SK_ANIMATION)
的新场景。
编辑:
我已经从您获得代码的地方找到了教程(或者至少我假设您已经这样做了),并使用以下内容进行操作:
In" didMoveView"添加:
player.physicsBody?.categoryBitMask = PhysicsCategory.Player
player.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
player.physicsBody?.collisionBitMask = PhysicsCategory.None
player.physicsBody = SKPhysicsBody(circleOfRadius: player.size.width/2)
player.physicsBody?.dynamic = true
(PhysicsCategory.Player只是我在PhysicsCategory中添加的值)
然后,在您添加敌人精灵的函数中,您必须添加以使两者发生碰撞:
monster.physicsBody?.contactTestBitMask = PhysicsCategory.Player
最后但并非最不重要的是,您必须添加以下代码才能添加"操作"碰撞didBeginContact函数:
if ((secondBody.categoryBitMask & PhysicsCategory.Monster != 0) &&
(firstBody.categoryBitMask & PhysicsCategory.Player != 0)) {
let gameOverScene = GameOverScene(size: self.size, won: false)
view?.presentScene(gameOverScene, transition: SKTransition.flipHorizontalWithDuration(0.5))
}
希望它现在为你工作!
答案 1 :(得分:0)
如果要呈现故事板场景,则需要使用
之类的内容let gameOverScene = self.storyboard!.instantiateViewControllerWithIdentifier("GameOverViewController") as! GameOverViewController
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))