swift - 使用 SKView 更改 View ?

标签 swift sprite-kit skview

我想知道如何切换到游戏结束时角色与敌人相撞时的场景。我在 main.storyboard 下制作了一个场景,我想知道如何通过代码连接它,我只知道如何使用按钮连接它,但这不是我要找的,因为你死时不会按下按钮带您进入游戏结束场景。

UPDATE:

func gameOver() {
        gameDelegate?.gameDelegateGameOver(score)


        let gameOverScene: GameOverScene = GameOverScene(size: self.size)
        self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))

这就是检测到碰撞时我的 gameOver 的内容。是的,它确实带我到了一个新场景,但不是我在 main.storyboard 中制作的场景。

最佳答案

您可以做的是创建一个碰撞 bool 值,如果它为真(因此,发生了碰撞),您可以在更新中使用 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中添加的一个值)

然后,在添加敌人 Sprite 的函数中,您必须添加以使两者发生碰撞:

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

希望它现在对您有用!

关于swift - 使用 SKView 更改 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32184816/

相关文章:

ios - SKSpriteNode 跟随 bezier 路径旋转

ios - 如何在 Xcode 中使用 Sprite Kit 添加粒子 sks 文件作为背景图像的叠加层?

ios - 应用程序不会注册从第一个 ViewController 传递的值

swift - 在 Swift 中,如果编写了 var,是否调用了一个惰性实例化器?

ios - TabBar 图标定位

swift - SKSprite.addChild 位于位置

ios - 将 UIView 转换到 SKView 时线程 1 信号 SIGABRT 崩溃

ios - UIVisualEffectView 不会模糊它是 SKView superview

ios - swift 3 : Making a Pause Menu in SpriteKit by overlaying a SKView?

ios - Xcode 错误 "failed to read asset tags: unexpected error generating result tags"