SKTransition не работает в Swift

У меня есть очень простая игра SpriteKit, написанная на Swift, с двумя сценами, между которыми я пытаюсь перейти. Этот код работает отлично:

let skView = self.view as SKView

let scene = GameScene(size: self.scene.size)
scene.size = skView.bounds.size
scene.scaleMode = .AspectFill

//This line shows the new scene immediately (as expected)
skView.presentScene(scene) 

Проблема возникает, когда я заменяю приведенную выше строку кода следующим:

let sceneTransition = SKTransition.doorsCloseHorizontalWithDuration(2.0)
skView.presentScene(scene, transition: sceneTransition)

Когда я это делаю, ничего не происходит (текущая сцена остается на экране). Я пробовал несколько разных переходов, но всегда с одинаковым результатом.

Какие-нибудь мысли?

2 ответа

Решение

Решаемые.

Оказывается, нет ничего плохого в коде выше. Проблема заключалась в том, что я пытался выполнить его в функции обновления на основе конкретной позиции SKPhysicsBody. Переход не происходит мгновенно, поэтому он дал время для повторного вызова update, что вызывало повторный запуск перехода снова и снова. Это привело к тому, что переход никогда не происходил.

Исправление состояло в том, чтобы добавить bool, чтобы проверить, начал ли я переход, поэтому я делаю попытку только один раз.

Если кто-то еще испытывает это, вы также можете приостановить исходящую сцену. Некоторая логика в этом может быть изменением состояния или вмешательством в переход.

попробуйте установить

  transition.pausesOutgoingScene = YES;

чтобы увидеть, поможет ли это,

или используйте это как решение, если это ваше намерение, или установите точки останова (попробуйте update: после того, как переход создан) и посмотрим, что случилось.

Другие вопросы по тегам