Unity URP でスプライトに影をつける
※ これは 2022/02/18 時点の Unity 2021.2.11f1 の情報です
最新版では動作が異なる可能性がありますのでご注意ください
暗号化データの読み書きができたので、今回はちまたで話題の HD-2D のような実装を試してみたい
本家 HD-2D は Unreal Engine で実装されているが、技術的には十分 Unity でもできるはず
とりあえず今回ははじめの一歩、Unity の URP で 3D 空間に建てた Sprite に影がつくようにしてみたい
たんに Sprite をたてても、Sprite Lit Shader
は Light 2D
専用で、こんな感じで影はつかないので・・・
必要なものは Shader ・・・ということで、Shader Graph で URP - Lit Shader Graph を作成
Shader の名前は Sprite Lit
にして、次のような感じで Shader Graph を設定
Texture2D
を入力プロパティに追加し、名前を Sprite
、Reference
を Sprite Renderer
に合わせて _MainTex
に指定
‘Vertex Colorに
Sprite` を表示するメッシュの各頂点の色情報が入ってきて、これは Lighting の効果を反映したものになるので、これを Sprite のテクスチャにかけ合わせて出力する感じ
グラフ全体の設定は次のように感じで、透過やクリッピング、影の設定が有効になるようにする
あとはこの Sprite Lit Shader
を設定した Material
を作り・・・
Sprite Renderer
にこの Material
を指定する
最後に Inspector を Debug モードに切り替えて、Sprite Renderer
の Cast Shadows
と Receive Shadows
を影が描画されるように設定
お試し実行
アニメーションさせてもそれに合わせてシャドウが描画されるし、他の影の影響を受けるようにもなった!