しっぽを追いかけて

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

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

Unity で Lights 2D を使う

※ これは 2021/07/09 時点の Unity 2021.1.14f1 の情報です

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

脱出ゲーム用に役立ちそうなネタも尽きたので、また Unity の 2D に戻り、使ってみたかった Lights 2D を試してみる

ポン置きするだけでエモい Lights 2D

以前使っていたねこ2匹が追いかけるプロジェクトを流用して試す

Lights 2D を使うには何はなくとも Scriptable Render Pipeline が必要

ただこれはすでにこのプロジェクトに適用済みなので、そのまま何もせず

次に Assets/Settings の配下に 2D Renderer Data のアセットを新規作成する

2D Renderer Data の作成

2D Renderer Data のアセットができたら、Project SettingsGraphicsScriptable Render Pipeline Settings に設定している Scriptable Object を開く

2D Renderer Data を Renderer List に設定

今回の場合 UniversalRP-HighQuality が開く対象で、この Renderer List に先ほどの 2D Renderer Data を設定する

こうすることで 2D LightsHierarhcy 上に追加できるようになるので、動く箱障害物の Obstacle の中にとりあえず Spot Light2D を追加する

Spot Light2D

これだけで Lights 2D が動くか?というとそうはいかない

Sprite の Renderer に設定されている Shader が、Sprites-Lit になっていないグラフィックには Lights 2D が全く効果を発揮してくれない

Sprite-Lit の Shader がないと 2D Lights は効果を発揮しない

しかも、Material のコンボボックスを開いても Sprites-Lit-Default のマテリアルは表示されないので選べない状態

Sprite-Rendererコンポーネントを作成しなおせば、デフォルトマテリアルが Sprites-Lit-Default になってくれるが、今回のように既存の Renderer があった場合、作り直すと設定値を指定しなおさないといけなくなるのでめんどくさい

なので、自前で Material を追加した方が早い

マテリアルを新規作成したら、Shader として Universal Render Pipeline/2D/Sprite-Lit-Default を選び、名前を Sprotes-Lit にした

Sprites-Lit の Shader Material を作成

最後にこのマテリアルを ObstacleSprite RendererTilemapTilemap Renderer に指定して動かしてみると

Lights 2D だけでエモい

これはエモい!