今回はYSortを使用した描画順の制御について解説します。
目次
Y座標による描画の違和感
例えばオブジェクト同士で重なりがある場合、立体感のある画像を重ねると違和感が発生します。
![](https://2dgames.jp/wp-content/uploads/2021/12/Main_tscn_-_TestYSort_-_Godot_Engine-1024x554.png)
これは極端な例ですが、いくつか重なりに違和感があります。なぜこのようなことが起きるのかというと、Y座標で描画物が制御されていないためです。
![](https://2dgames.jp/wp-content/uploads/2021/12/Main_tscn_-_TestYSort_-_Godot_Engine-1-1024x554.png)
YSortで描画順を制御する
これをプログラムで制御すると少し厄介なのですが、なんとGodot EngineにはY座標でオブジェクトの描画順を制御するノードが用意されています。
![](https://2dgames.jp/wp-content/uploads/2021/12/Main_tscn_-_TestYSort_-_Godot_Engine-2-1024x607.png)
この「YSort」に描画順を制御したいノードをぶら下げると、違和感のない描画順になります。
![](https://2dgames.jp/wp-content/uploads/2021/12/Main_tscn_-_TestYSort_-_Godot_Engine-3-1024x480.png)
サイズの異なるオブジェクトを使う場合
YSortを使う場合の注意点として、サイズの異なるオブジェクトを配置する場合です。
例えば木の画像が「128px」、キャラクターを「64px」とした場合、
![](https://2dgames.jp/wp-content/uploads/2021/12/Cursor_%E3%81%A8_terrain_png_-_Aseprite_v1_2_30.png)
そのまま YSort を使うとこのような違和感が発生します。
![](https://2dgames.jp/wp-content/uploads/2021/12/player.gif)
これは描画の基準(ピボット)が画像の中心となっているためです。
![](https://2dgames.jp/wp-content/uploads/2021/12/Player_tscn_-_TestYSort_-_Godot_Engine-1024x679.png)
ですので描画の基準を足元に統一します。
![](https://2dgames.jp/wp-content/uploads/2021/12/Player_tscn_-_TestYSort_-_Godot_Engine-1-1024x453.png)
![](https://2dgames.jp/wp-content/uploads/2021/12/Main_tscn_-_TestYSort_-_Godot_Engine-4.png)
すると違和感の解消されたYSortで描画が行われるようになります。
![](https://2dgames.jp/wp-content/uploads/2021/12/foot.gif)
今回作成したプロジェクト
今回作成したプロジェクトファイルを添付しておきます。
なお木の画像については「ぴぽや倉庫」様よりお借りました。