Как перенести SKSpriteNode на передний план?
Как я могу привести SKSpriteNode в начало всех остальных node?
С UIView я могу использовать метод bringSubviewToFront для вывода uiview перед другими представлениями.
Ответы
Ответ 1
Вы не можете "вывести его на передний план", но вы можете изменить его zPosition
.
Чем выше zPosition
node, тем позже он будет отображаться.
Итак, если у вас есть три узла с zPositions
от -1, 0 и 1, то -1 появится на обратной стороне. Тогда 0. Тогда 1 появится спереди.
Если все используют значение по умолчанию zPosition
0.0, то они отображаются в порядке, указанном в массиве children родительского node.
Вы можете прочитать все это в документах.
https://developer.apple.com/documentation/spritekit/sknode
Ответ 2
Это расширение добавляет метод bringToFront
к SKNode. Это замечательно для времен, когда zPosition
является неуместным, и вы хотите полагаться на порядок братьев и сестер.
extension SKNode {
func bringToFront() {
guard let parent = parent else { return }
removeFromParent()
parent.addChild(self)
}
}
`
Ответ 3
Если вы хотите перенести node на передний план, используйте это:
yourNode.zPosition = 1
или к самой задней части:
yourNode.zPosition = -1
или на том же уровне, что и другие узлы (по умолчанию это значение установлено):
yourNode.zPosition = 0