SKSpriteNodeChild в неправильном zPosition
Я добавляю два SKSpriteNode в качестве дочерних к другому SKSpriteNode. Код выглядит так:
let parentNode = SKSpriteNode(imageNamed: "ParentImage")
parentNode.position = CGPointMake(0,0)
parentNode.zPosition = 0
let child1 = SKSpriteNode(imageNamed: "ChildImage1")
child1.position = CGPointMake(0,0)
parentNode.addChild(child1)
child1.zPosition = -10
let child2 = SKSpriteNode(imageNamed: "ChildImage2")
child2.position = CGPointMake(0,0)
parentNode.addChild(child2)
child2.zPosition = 10
Когда я добавляю parentNode в мою сцену, порядок спрайтов в z-плоскости от конца к началу
- ParentNode
- child1
- child2
а иногда ожидаемый
- child1
- ParentNode
- child2
Получается ли свойство zPosition переопределенным, когда дочерний элемент находится ниже parentNode? Кто-нибудь сталкивался с такой ошибкой или знает об исправлении?
В GameViewController, skView.ignoresSiblingOrder = true
Когда я установил его на false
Я получаю первое поведение (parentNode, child1, child2) каждый раз.
2 ответа
Проблема была исправлена. Я не могу быть на 100% уверен, что это решило, поскольку я попробовал несколько вещей. Я установил ignoresSiblingOrder в false, а затем вернул в true, переместил определение childNode, появляющееся сверху, в ту же функцию, что и родительский, и, наконец (я подозреваю, что это было причиной исправления), переместил порядок addChild и установка zPosition (в моем проекте порядок был изначально child1.zPosition
, parentNode.addChild
; изменение порядка этих двух, вероятно, решило проблему, так как я подозреваю, что последующий порядок в братстве запутал zPosition).
Я бы рекомендовал добавить узел, который действует как контейнер, а затем добавить три других узла в качестве дочерних элементов этого узла. Таким образом, ваши три узла действуют как братья и сестры, и вы можете переставить их, если нужно, используя их zPosition
,