Излучатель частиц не отображается на изображении (быстрый спрайтекит)

Это довольно простой вопрос (я новичок в swift и spritekit). Так или иначе, я добавляю эмиттер частиц в спритенод (назовем это шар) и добавляю шар в мою сцену. Этот шар находится на вершине другого spritenode, который представляет фон. Когда я запускаю приложение, шар выглядит нормально, но излучатель частиц не отображается. Излучатель показывает нормально, когда я удаляю фон, но не когда я добавляю фон. Я опубликую пример кода...

//Background
let background = SKSpriteNode(imageNamed:"Background")
background.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
background.zPosition = 0
self.addChild(background)

//Ball
let ball = SKSpriteNode(imageNamed: "ball")
ball.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
ball.zPosition = 1
ball.physicsBody = SKPhysicsBody(rectangleOfSize: ball.frame.size)
ball.physicsBody?.usesPreciseCollisionDetection = true 


//Emitter
let emitter = SKEmitterNode(fileNamed: "emitter")
emitter.targetNode = self

ball.addChild(emitter)

self.addChild(ball)

Как я уже сказал, это кажется довольно простым вопросом. Я просто не знаю, что я делаю не так. Просто повторюсь, когда я запускаю это, излучатель не показывает. Но если я уберу фон, излучатель показывает.

Спасибо за помощь:)

3 ответа

Поэтому я попытался изменить zPosition на emitter, и это ничего не изменило. Но когда я изменил zPosition фона на -1, эмиттер показал. Я хотел бы знать, почему это работает, ха-ха. Но спасибо за предложения:)

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

Также возможно, что ваши излучающие узлы и фон имеют одинаковый цвет, поэтому кажется, что его там нет.

У меня было то же самое, но когда вы сказали, что этого не происходит, когда вы закомментируете фон, я вспомнил, что в GameViewController есть команда, которую вы должны установить в false. skView.ignoresSiblingOrder = false

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