Unity は、レイヤーの順序やカメラからの距離などのいくつかの基準によってレンダラーをソートします。Unity の Graphics 設定 (Edit > Project Settings > Graphics) に、Transparency Sort Mode と呼ばれる設定があります。このモードでは、カメラとの位置関係でスプライトをソートする方法を制御できます。具体的には、軸上のスプライト位置を利用して、他のスプライトと比較してどのスプライトが透明であるかを判断します。
この設定は、スプライトを Y 軸に沿って並べるときなどに使用されます。 2D ゲームでは非常によく使われます。Y 軸の高い位置にあるスプライトは、低い位置のスプライトの後ろにソートされます。こうすることによって、高い位置にあるスプライトは遠くにあるように見えます。
使用可能な Transparency Sort Mode のオプションは 4 つあります。
Sort Mode | 説明 |
---|---|
デフォルト | カメラの Projection モードが Perspective または Orthographic に設定されているかどうかに基づいてソートします。 |
Perspective | Perspective ビューに基づいてソートします。 Perspective ビューでは、カメラ位置からスプライトの中心までの距離に基づいてスプライトをソートします。 |
Orthographic | Orthographic ビューに基づいてソートします。Orthographic ビューでは、ビューの方向に沿った距離に基づいてスプライトをソートします。 |
Custom Axis | Transparency Sort Axis で指定された軸に基づいてスプライトをソートします。 |
Transparency Sort Mode を Custom Axis に設定する場合は、Transparency Sort Axis も設定する必要があります。
Transparency Sort Mode モードを Custom Axis に設定している場合は、シーンビューのレンダラーは、カメラからこの軸までの距離に基づいてソートされます。 –1 から 1 の範囲の値を使用して軸を定義します。例えば、 X=0, Y=1, Z=0 は上方向への軸を設定し、 X=1, Y=1, Z=0 は、X と Y の間を通る斜め方向の軸を設定します。
例えば、スプライトを上の画像のようにしたい場合は、Transparency Sort Mode を Custom Axis に設定し、Transparency Sort Axis の Y 値を 0 より大きい値に設定します。
さらに、カメラの以下のプロパティを変更し、スクリプトを使ってカメラごとにスプライトをソートすることもできます。
TransparencySortMode (Transparency Sort Mode に該当)
TransparencySortAxis (Transparency Sort Axis に該当)
例:
var camera = GetComponent<Camera>();
camera.transparencySortMode = TransparencySortMode.CustomAxis;
camera.transparencySortAxis = new Vector3(0.0f, 1.0f, 0.0f);