0

我想知道当角色在游戏结束时与敌人发生碰撞时如何切换到场景。我在 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 中制作的场景。

4

2 回答 2

1

你可以做的是创建一个碰撞布尔值,如果它是真的(因此,有些东西发生了碰撞),你可以view.presentScene(YOUR_SCENE, SK_ANIMATION)在更新函数中呈现一个新场景。

编辑:

我从您获得代码的地方找到了教程(或者至少我假设您这样做了),并使其与以下内容一起使用:

在“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))
}

希望它现在对你有用!

于 2015-08-24T15:32:13.487 回答
0

如果要呈现情节提要场景,则需要使用类似

let gameOverScene = self.storyboard!.instantiateViewControllerWithIdentifier("GameOverViewController") as! GameOverViewController
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))
于 2015-08-24T16:16:37.970 回答