установить SKEmitterNode в фоновом режиме - PullRequest
0 голосов
/ 18 января 2019

Я настраиваю сцену с фиксированным фоном (простой прямоугольник), SKEmitterNode и backgroundLayer (SKNode, включающий много SKShapeNodes): это иерархия моей сцены. Но, даже если я добавляю узел эмиттера как дочерний элемент сцены сразу после фиксированного фона и непосредственно перед фоновым слоем, испускаемые частицы находятся на переднем плане, а это не то, чего я ожидаю. действительно, я хотел бы, чтобы они отображались между фиксированным фоном и фоновым слоем, чего не происходит.

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

Весь следующий код взят из 'init (size: CGSize) {}' класса сцены, который наследуется от SKScene. Это весь процесс настройки сцены (когда добавляются дочерние элементы).

anchorPoint = CGPoint(x: 0, y: 0)
background.position = CGPoint(x: sceneSize.width / 2, y: sceneSize.height / 2)
background.fillColor = UIColor(white: 0.5, alpha: 1)
background.strokeColor = UIColor.lightGray
addChild(background)

setUpParticleEmitter() // it sets up the particle emitter which is an attribute of the class
addChild(backgroundEmitter) // This is the name of the emitter
backgroundEmitter.targetNode = scene

backgroundLayer.position = CGPoint(x: 0, y: 0)
addChild(backgroundLayer)

gameLayer.position = CGPoint(x: -1 * sceneSize.width, y: 0) // another layer for futur nodes
addChild(gameLayer)

Я ожидаю, что частицы будут отображаться между 'background' и 'backgroundLayer', но они отображаются на переднем плане (= над потомками backgroundLayer), возможно ли это изменить?

1 Ответ

0 голосов
/ 18 января 2019

Вы можете выбрать, какие узлы должны быть впереди, а какие сзади, установив для них zPosition .

first_node.zPosition  = 1
second_node.zPosition = 2  // displayed over first node
...