使用 SKView 更改视图?
Changing view with 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.
中制作的场景
你可以做的是创建一个碰撞布尔值,如果它是真的(因此,有东西发生碰撞),你可以在更新函数中用 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
最后但同样重要的是,您必须添加以下代码以将 "an action" 添加到 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))
}
希望它现在对你有用!
如果你想呈现故事板场景,你需要使用类似
的东西
let gameOverScene = self.storyboard!.instantiateViewControllerWithIdentifier("GameOverViewController") as! GameOverViewController
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))
我想知道在游戏结束时角色与敌人发生碰撞时如何切换到场景。我在 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.
中制作的场景你可以做的是创建一个碰撞布尔值,如果它是真的(因此,有东西发生碰撞),你可以在更新函数中用 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
最后但同样重要的是,您必须添加以下代码以将 "an action" 添加到 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))
}
希望它现在对你有用!
如果你想呈现故事板场景,你需要使用类似
的东西let gameOverScene = self.storyboard!.instantiateViewControllerWithIdentifier("GameOverViewController") as! GameOverViewController
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))