GodotEngineでNode2Dの描画順制御
例えば以下のようなカードゲームを作っているとして、手札カードは右にいくほど重なりは上にしたい
https://gyazo.com/3837cc1656721317393b593db773c430
何も考えずに実装していると、discardとdrawを繰り返しているうちに重なり順がちぐはぐになってくる
https://gyazo.com/6814e8c5165eac6135f8abdc61fad639
z_indexを使って制御できる
カードをドローする処理で、ドローが後のカードほど z_indexの数値を高くすれば意図した通りの描画順になった
code:py
func draw_cards(count):
for i in count:
(省略)
draw_card.position = Vector2(100 + i * 150, 450)
draw_card.z_index = i
CanvasLayerで描画順を制御する方法もある
z_index だけで描画順を制御してもよいですが、背景(奥に置きたい)やUI(手前に表示したい)など、柔軟に描画順を制御するには CanvasLayer を使用します。
CanvasLayerのインスペクタから Layerの値を調整する