Изменение вида с помощью SKView?

Я хочу знать, как перейти к сцене, когда персонаж сталкивается с врагом в конце игры. Я сделал сцену под 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.


person Swift101    schedule 24.08.2015    source источник


Ответы (2)


Что вы можете сделать, так это создать логическое значение столкновения, и если оно истинно (следовательно, что-то столкнулось), вы можете представить новую сцену с 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))
}

Надеюсь, это работает для вас сейчас!

person Julia Grill    schedule 24.08.2015
comment
Я отредактировал свой ответ, чтобы он содержал решение, которое работает для меня! - person Julia Grill; 24.08.2015

Если вы хотите представить сцену раскадровки, вам нужно использовать что-то вроде

let gameOverScene = self.storyboard!.instantiateViewControllerWithIdentifier("GameOverViewController") as! GameOverViewController
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0))
person Daniel Kanaan    schedule 24.08.2015
comment
«Игровая сцена» не имеет участника с ошибкой «раскадровка»? - person Swift101; 24.08.2015