一個解決 2D 排序問題的互動指南
提示:用滑鼠拖曳角色來移動
試著拖曳「角色」,讓他從「樹」的前方和後方經過,觀察他的圖層變化。
當你啟用 Y Sort Enabled 時,Godot 會根據子節點的 Y 座標來決定繪製順序:Y 值越大(在畫面上越下方)的節點,會被畫在越上層。
但關鍵在於,Godot 比較的不是整個圖片的位置,而是每個節點的「原點 (Origin)」的 Y 座標。
角色和樹的原點都在左上角。當角色在樹的前方時,他的原點 Y 座標比樹的原點小,所以被畫在樹的後面。
將原點移到物件的「腳下」。現在當角色在樹的前方時,他的原點 Y 座標比樹大,因此被正確地畫在樹的前面。
對於獨立的場景實例(例如玩家、NPC、可拾取的道具、單獨放置的樹),你需要調整它們 Sprite 的原點。
Sprite2D 或 AnimatedSprite2D 節點。Transform 分類下的 Offset 屬性。Offset 的 Y 值,將圖片向上移動,直到節點的原點 (那個小小的十字) 對準物件的腳下。通常 Y 值會是一個負數。💡 提示:
在 2D 視圖中,選擇移動工具 (W),然後按住 Alt 鍵拖曳你的 Sprite。這樣可以直接修改 Offset,非常直觀。
當你的遮擋物(例如樹、牆壁)是畫在 TileMap 上時,設定會稍微不同,需要兩步關鍵操作。
你需要告訴 Godot,這個圖層上的瓦片需要彼此之間進行 Y 軸排序。
Ordering 分類,並勾選 Y Sort Enabled。你需要為每一個需要遮擋的瓦片(如樹)設定它的排序「腳本」。
TileSet 面板。Rendering 分類。Y Sort Origin 的 Y 值設定為你瓦片的高度 (例如,16x16 的瓦片就設為 16)。當 Y-Sort 失效時,按照以下步驟檢查:
Y Sort Enabled?Offset 是否已調整到腳下?Y Sort Enabled,而不是主節點?Y Sort Origin 是否已設定?Z Index 是否都為 0?Z Index 會覆蓋 Y-Sort 的效果。