時偶(ときたま)ブログ

40代のおとうちゃんが徒然に、ときたま書いてるブログです

LWRPを使って、壁に遮られたUIを表示する

壁に遮られたキャラクターのシルエットを表示する処理は以下のサイトを参考にできた。
【Unity】LWRPで、壁で遮られて見えないキャラクターをシルエット表示するのが超簡単にできた

さてそれでは、【UnityC#講座】HPゲージをfill Amountで作るなんかで作成したキャラクターに関連づけられたUIのHPバーはどうやってやればいいだろうか?


2つのマテリアルを用意する

まずuGUIのシェーダー(UI-Default.shader)を用意してシェーダーからマテリアルを作成する。 その辺のことは以下を参照。
【Unity】uGUIのシェーダーを改造してシェーダーを練習…のススメ

シェーダーはこんな感じで設定

f:id:tokitama-blog:20200129171541p:plain
ShaderGraph

設定したシェーダーから通常に表示する用のマテリアルUI_Default HpBarと、壁に隠れた部分を表示するマテリアルUI_Default HpBar_frontを作成する。

通常表示用のマテリアル

HPバーImageのマテリアルにUI_Default HpBarをアタッチする。

f:id:tokitama-blog:20200129174520p:plain
HPバーImage

壁に隠れた部分のマテリアル

UI_Default HpBar_frontのインスペクターでRender QueueをAlphaTestに設定しておく。
こちらはLWRPでの設定に使う。

f:id:tokitama-blog:20200129173047p:plain
Material Render Queue


LWRPに設定をRender Objectを追加

HPバーに新たなレイヤーを設定して、【Unity】LWRPで、壁で遮られて見えないキャラクターをシルエット表示するのが超簡単にできたの【手順2】でキャラクターのシルエットを設定したのと同様に、HPバーの壁に隠れた部分のマテリアル設定を追加する。

【手順3】にしたがってHPバーの通常表示を設定すればOK!