2013-10-03 36 views

risposta

45

Non è possibile "portarlo in primo piano" ma è possibile modificare lo zPosition di esso.

Quanto più alto è il zPosition del nodo, più tardi viene eseguito il rendering.

Quindi, se si dispone di tre nodi con zPositions di -1, 0 e 1, sul retro verrà visualizzato -1. Quindi lo 0. Quindi 1 apparirà in primo piano.

Se tutti utilizzano il valore predefinito zPosition di 0.0, vengono visualizzati nell'ordine in cui appaiono nell'array figlio del nodo padre.

È possibile leggere tutto nei documenti.

https://developer.apple.com/documentation/spritekit/sknode

+1

Grazie per l'aiuto. Questo è quello di cui ho bisogno. Ora posso portare SKSpriteNode in primo piano sullo sfondo. –

+2

potresti anche creare 2 livelli (o più). ne hai uno per lo sfondo e l'altro per i giocatori, ecc. L'ordine che aggiungi inciderà sulla stratificazione, quindi aggiungi prima il livello di sfondo. – DogCoffee

0

Questa estensione aggiunge un metodo per bringToFront SKNode. Questo è ottimo per i momenti in cui lo zPosition non è appropriato e si desidera fare affidamento sull'ordinamento fratello.

extension SKNode { 
    func bringToFront() { 
     guard let parent = parent else { return } 
     removeFromParent() 
     parent.addChild(self) 
    } 
} 

`

0

Se si vuole portare un nodo al molto anteriore usare questo:

yourNode.zPosition = 1

o al molto indietro:

yourNode.zPosition = -1

o allo stesso livello degli altri nodi (Come è impostato su questo valore di default):

yourNode.zPosition = 0

Problemi correlati