壁にキャラクターが隠れてしまって見えなくなった時などになるあれです。
Unity 2021.3
UniversalRP 12.1
Forward
はじめに
新年初記事です。
明けましておめでとうございます。
プレイヤーが見えなくなる問題は結構深刻な問題ですね。
プレイヤーがオブジェクトに遮られて見えなくなると、なんとプレイヤーが見えなくなってしまうのです。
対策が必要ですね。
Layerの設定
見えなくなってしまうと困るオブジェクトのLayerを設定します。
ここではSphereをプレイヤーと仮定して、Sphereが物陰に隠れたら隠れた部分をシルエット表示したいと思います。
Sphereを選択してPlayerレイヤーを設定します。
ちなみにLayerの作成方法、設定方法は解説しません。
マテリアルの用意
シルエットを描画する際の、シルエット用マテリアルを作成します。
今回はUnlitを使用してベタ塗りで描画するようにします。
シルエットなので。色は赤です。
プレイヤーを描画対象から外す
まずはプレイヤーが普通に描画されるのを防ぎます。
するとPlayerレイヤーのオブジェクトが消失します。
描画から外しているので当たり前ですね。
Renderer Feature を追加する
次は
(Experimental) とか書いてありますが気にしません。
シルエット用とプレイヤー用の2つ作成します。
名前はそれぞれ
- Silhouette
- Player
とします。
順番はどっちでも良いです。
設定を間違わなければ。
肝心の設定はこんな感じになります。
やってることとしては、Depth TestがGreater、つまり手前にオブジェクトがある場合は「Behind Colorマテリアル」で上書き描画し、それ以外は普通にプレイヤーを描画するというものです。
実行結果
しっかりシルエット表示されていることが確認できました。
特許
こういった「見えない部分はシルエットで表現する」技術は特許が既に登録されています。