SKSpriteNodeを他のすべてのノードの前面に移動するにはどうすればよいですか?
UIViewでは、bringSubviewToFrontを使用してuiviewを他のビューの前面に表示できます。
「前面に出す」ことはできませんが、zPosition
を変更できます。
ノードのzPosition
が高いほど、後でレンダリングされます。
したがって、zPositions
が-1、0、1の3つのノードがある場合、-1が後ろに表示されます。次に0です。その後、1が前面に表示されます。
すべてがデフォルトのzPosition
0.0を使用している場合、親ノードの子配列に表示される順序でレンダリングされます。
あなたはそれをすべてドキュメントで読むことができます。
Swift 4:私は通常、列挙型を作成してzPositionsを確立するため、さまざまなレイヤーを簡単に管理できます。
_enum ZPositions: Int { case background case foreground case player case otherNodes }
_
したがって、新しいアイテムをセットアップするときは、次の方法でzPositionを指定できます。
button.zPosition = CGFloat(ZPosition.otherNodes.rawValue)
(ボタンのzPositionが最も高くなりました)参考になれば幸いです...
この拡張機能は、bringToFront
メソッドをSKNodeに追加します。これは、zPosition
が不適切で、兄弟の順序付けに依存したい場合に最適です。
extension SKNode {
func bringToFront() {
guard let parent = parent else { return }
removeFromParent()
parent.addChild(self)
}
}
`
ノードを最前面に移動したい場合は、これを使用します。
yourNode.zPosition = 1
または最後に:
yourNode.zPosition = -1
または他のノードと同じレベル(デフォルトでこの値に設定されているため):
yourNode.zPosition = 0