2015-08-24 1 views
0

Я хочу знать, как изменить сцену, когда персонаж сталкивается с врагом в игре. Я сделал сцену под основной.страницей, и я хочу знать, как подключить ее через код, я знаю, как подключить ее с помощью кнопок, но это не то, что я ищу, поскольку вы не будете нажимать кнопку, когда вы умрете чтобы доставить вас в игру по сцене.Изменение вида с помощью SKView?

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.

ответ

1

Что вы можете сделать, так это создать столкновение логическое, и если оно истинно (отсюда что-то столкнулось), вы можете представить новую сцену с помощью функции view.presentScene(YOUR_SCENE, SK_ANIMATION) в функции обновления.

EDIT:

Я нашел учебник от того, где вы получили код (или, по крайней мере, я предполагаю, что вы сделали) и получил это работает следующим:

В «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)

Тогда, в функции, где вы добавляете вражеские спрайтов вы должны добавить в о rder сделать два столкновения:

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

Надежда это работает ты сейчас!

+0

не получилось :( – Swift101

+0

могли бы вы поделиться код? –

+0

сделано, я добавил код – Swift101

0

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

let gameOverScene = self.storyboard!.instantiateViewControllerWithIdentifier("GameOverViewController") as! GameOverViewController 
self.view!.presentScene(gameOverScene, transition: SKTransition.fadeWithDuration(0.0)) 
+0

«Игровая сцена» не имеет члена, называемого «раскадровкой»? – Swift101

 Смежные вопросы

  • Нет связанных вопросов^_^