ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity - Renderer 2D Data:Transparency Sort Mode を設定して動的に表示順を変更する

初めに

 Unity で 2D URP を利用するとき、Renderer 2D Data を作成し、Renderer に割り当てることができます。本記事では、この Renderer 2D Data を使って、オブジェクトの後ろに回り込むなどの表示順の変更を動的に行う方法をまとめます。

目標

 今回は、2D でありながら、座標によってオブジェクトの描画順を動的に変更し、回り込ませるような表現ができるようにすることを目標にします。

youtu.be

前提

 2D URP の設定をしておきます。

  • Universal Render Pipeline Asset と Renderer 2D Data を作成し、Renderer List に Renderer 2D Data を指定する


  • Edit > Project Settings > Graphics の Scriptable Render Pipeline Settings に作成した Universal Render Pipeline Asset を指定する

Renderer 2D Data の設定を変更する

 Renderer 2D Data を確認すると、Light や Camera などの設定ができることが確認できます。今回は、General の Transparency Sort Mode を変更していきます。

 Transparency Sort Mode には、4つのモードがあります。

Mode 説明
Default カメラ位置からオブジェクトまでの距離で描画順を変更する
Perspective 透視投影に基づいて描画順を変更する
Orthographic 平行投影法に基づいて描画順を変更する
Custom Axis 軸に基づいて描画順を変更する

 default はカメラに近いほうが前に描画されるようです。Perspective と Orthographic に関しては、下のリンク先を参考にしてください。透視投影と平行投影について、解説されています。

zokeifile.musabi.ac.jp

Custom Axis を使う

 2D ゲームでは、y 軸が大きいものが奥に描画されるものがあると思います。Custom Axis では、軸を使って描画順を動的に変更することができます。

 このようにすることで、y 軸と z 軸で描画順が変更できるようになりました。オブジェクトの大きさによっては、微調整が必要なものもあるため、その場合はオブジェクトの z 軸を調整することで、描画順を変えるタイミングを修正することができます。

youtu.be