Я пытаюсь создать игру типа астероидов, и каждый раз, когда астероид сталкивается с игроком, конечная сцена загружается нормально, вырезается, когда я пытаюсь перезапустить ее, как если бы код зацикливался на функции столкновения, которая вызывала конец сцены. Вот функция столкновенияSwift SpriteKit presentScene error
func didBeginContact(contact: SKPhysicsContact) {
print("5")
//Creating a variable that holds which two items collide
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
//Creating a switch case statement
//This will run a different case depending on whitch two objects collide
switch(contactMask) {
//If the satellite and the asteroid collide do this
case bitMask.satellite.rawValue | bitMask.asteroid.rawValue:
//removing the satellite
let secondNode = contact.bodyB.node
secondNode?.physicsBody?.allowsRotation = true
let firstNode = contact.bodyA.node
firstNode?.removeFromParent()
//Stopping the mission timer
removeActionForKey("missionDurationTime")
self.removeAllChildren()
print("6")
self.view?.presentScene(EndScene())
print("7")
default:
return
}
}
А вот функция, которая восходит к моей игре сцене из моей конечной сцены
func Restart(){
print("hello")
RestartBtn.removeFromSuperview()
speach.removeFromSuperview()
score.removeFromSuperview()
gameOver.removeFromSuperview()
self.view?.presentScene(GameScene())
}
После того как я нажал кнопку перезагрузки всех меток в EndScene уходит как они должны, но затем экран пуст, и консоль просто печатает `5 Слишком много раз, чтобы подсчитать до тех пор, пока метки в конце сцены не вернутся. Я очень смущен и по-своему над головой. Любая помощь высоко ценится!
UPDATE:
Я изменил код в моей кнопки перезапуска в этом
print("hello")
RestartBtn.removeFromSuperview()
speach.removeFromSuperview()
score.removeFromSuperview()
gameOver.removeFromSuperview()
let scene = GameScene(size: self.view!.bounds.size)
scene.backgroundColor = SKColor(red: 1, green: 1, blue: 1, alpha: 1)
scene.scaleMode = .AspectFill
scene.backgroundColor = UIColor.whiteColor()
let transition = SKTransition.pushWithDirection(SKTransitionDirection.Left, duration:0.5)
self.scene?.view?.presentScene(scene, transition: transition)
Теперь нагрузок игра сцены, и все, как это должно быть, за то, что все пять раз превышает исключением , Это то, что он должен выглядеть следующим образом: What it should look like
И это то, что он выглядит как What it does look like
Как вы призывающую вашу первую сцену, когда ваше приложение запускает (код в контроллере Gameview) ?. Можете ли вы поставить этот код на свой вопрос, пожалуйста. В вашем текущем коде перезагрузки вам необходимо инициализировать GameScene с ограничением просмотра в качестве его размера. Строка линии линии линии 2 ниже не будет работать, когда вы делаете это, потому что вы больше не масштабируете свою сцену. Я предполагаю, что вы изменяете размер своей сцены по-разному, когда загружаете свою игру и когда ее перезапускаете, и поэтому она выглядит по-другому. – crashoverride777
Я просто использую код в контроллере игрового представления, который Xcode дает вам, если это имеет смысл. Я не могу опубликовать точный код прямо сейчас, я далеко от своего Mac. –
Я добавил ответ. Дайте мне знать, как это происходит. – crashoverride777