2016-08-31 3 views
2

Я создаю игру, которая обладает до 5 различных сцен (уровней). Однако есть несколько сцен, я бы хотел иметь только одну бесконечную прокрутку фона навсегда, даже когда я перехожу из одной сцены в другую.Как создать бесконечный прокручиваемый фон с переключением сцен в SpriteKit?

Не удалось найти что-либо в Google, так что ожидайте ответа здесь.

ответ

2

Его всегда хорошая практика, чтобы опубликовать некоторый код того, что вы пробовали раньше, задавая вопрос о переполнении стека. Люди, как правило, не помогают, когда вы не показываете код.

Поскольку вы не можете одновременно запускать несколько SKScenes, и сцены начинаются в чистом состоянии (если вы не архивируете всю сцену), вам больше всего придется использовать текущую настройку для фона прокрутки и использовать ее для всех сцены. Вы можете использовать расширения протокола или подклассы для совместного использования кода.

Как указано в KingOfDragon, вы можете попробовать играть с помощью SKTransitions, например pushInDirection, чтобы получить желаемый результат.

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

Я не уверен, что ваши настройки, но в верхней части, если моя голова это может быть что-то вроде этого

Создать глобальное свойство выше любого класса сцены

let bgPosition = CGPoint() 

чем создать продление протокола для вашего прокрутки фона кода, чтобы сделать его многоразовым

protocol ScrollingBackground { } 
extension ScrollingBackground where Self: SKScene { 

    func loadScrollingBackground(at position: CGPoint) { 
     /// your code for the scrolling background 
     /// set position to position you pass in function 

    } 

чем в первой сцене вы соответствовать протоколу и установить прокрутку фон, как обычно. Затем добавьте метод WillMoveFromView, который вызывается при смене сцены. Там свойство bgPosition добавлено к вашей последней позиции фона прокрутки.

class Scene1: SKScene, ScrollingBackground { 

     .... 
     let backgroundPosition = .... 
     loadScrollingBackground(at: backgroundPosition) 



     override func willMoveFromView(view: SKView) { 
      bgPosition = ... //Set to current position of scrolling background  
     } 
    } 

чем в других ваших сценах вы делаете то же самое, но передать в собственность bgPosition (как упоминалось выше), чтобы установить фон в положение это было в СЦЕНЫ1.

class Scene2: SKScene, ScrollingBackground { 

     .... 
     loadScrollingBackground(at: bgPosition) 
    } 

Не уверен, что это именно то, что вы ищете, но что-то вроде этого, вероятно, самый простой способ.

Надеется, что это помогает

+1

Вы можете иметь 2 сцены, выполняющуюся в то же самое время, когда происходит переход, так что если вы делаете это правильно, вы можете добиться того, что ОП хочет – Knight0fDragon

+1

Моего предположение состоит в использовании 'SKTransition.pushWithDirection' для достичь желаемого эффекта, который он собирается для – Knight0fDragon

+0

Это правда, я забыл о переходах сцены. Я просто снимал в темноте, не уверен, как ОП установил свой прокручивающий фон. – crashoverride777

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