しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Unity URP でスプライトに影をつける

※ これは 2022/02/18 時点の Unity 2021.2.11f1 の情報です

最新版では動作が異なる可能性がありますのでご注意ください

暗号化データの読み書きができたので、今回はちまたで話題の HD-2D のような実装を試してみたい

本家 HD-2DUnreal Engine で実装されているが、技術的には十分 Unity でもできるはず

とりあえず今回ははじめの一歩、Unity の URP で 3D 空間に建てた Sprite に影がつくようにしてみたい

たんに Sprite をたてても、Sprite Lit ShaderLight 2D 専用で、こんな感じで影はつかないので・・・

Sprite Lit Shader は 3D の Lighting が反映されない

必要なものは Shader ・・・ということで、Shader Graph で URP - Lit Shader Graph を作成

URP Lit Shader Graph を作成

Shader の名前は Sprite Lit にして、次のような感じで Shader Graph を設定

URP Lit Shader で Sprite を表示する Graph

Texture2D を入力プロパティに追加し、名前を SpriteReferenceSprite Renderer に合わせて _MainTex に指定

‘Vertex ColorSprite` を表示するメッシュの各頂点の色情報が入ってきて、これは Lighting の効果を反映したものになるので、これを Sprite のテクスチャにかけ合わせて出力する感じ

グラフ全体の設定は次のように感じで、透過やクリッピング、影の設定が有効になるようにする

出力設定

あとはこの Sprite Lit Shader を設定した Material を作り・・・

Material 作成

Sprite Renderer にこの Material を指定する

Sprite Renderer に指定

最後に Inspector を Debug モードに切り替えて、Sprite RendererCast ShadowsReceive Shadows を影が描画されるように設定

Sprite Render の Debug 設定

お試し実行

Sprite に影がつく

アニメーションさせてもそれに合わせてシャドウが描画されるし、他の影の影響を受けるようにもなった!