Unity で Lights 2D を使う
※ これは 2021/07/09 時点の Unity 2021.1.14f1 の情報です
最新版では動作が異なる可能性がありますのでご注意ください
脱出ゲーム用に役立ちそうなネタも尽きたので、また Unity の 2D に戻り、使ってみたかった Lights 2D を試してみる
以前使っていたねこ2匹が追いかけるプロジェクトを流用して試す
Lights 2D を使うには何はなくとも Scriptable Render Pipeline
が必要
ただこれはすでにこのプロジェクトに適用済みなので、そのまま何もせず
次に Assets/Settings
の配下に 2D Renderer Data
のアセットを新規作成する
2D Renderer Data
のアセットができたら、Project Settings
の Graphics
で Scriptable Render Pipeline Settings
に設定している Scriptable Object
を開く
今回の場合 UniversalRP-HighQuality
が開く対象で、この Renderer List
に先ほどの 2D Renderer Data
を設定する
こうすることで 2D Lights
を Hierarhcy
上に追加できるようになるので、動く箱障害物の Obstacle
の中にとりあえず Spot Light2D
を追加する
これだけで Lights 2D が動くか?というとそうはいかない
Sprite の Renderer に設定されている Shader が、Sprites-Lit
になっていないグラフィックには Lights 2D が全く効果を発揮してくれない
しかも、Material
のコンボボックスを開いても Sprites-Lit-Default
のマテリアルは表示されないので選べない状態
Sprite-Renderer
のコンポーネントを作成しなおせば、デフォルトマテリアルが Sprites-Lit-Default
になってくれるが、今回のように既存の Renderer
があった場合、作り直すと設定値を指定しなおさないといけなくなるのでめんどくさい
なので、自前で Material
を追加した方が早い
マテリアルを新規作成したら、Shader
として Universal Render Pipeline/2D/Sprite-Lit-Default
を選び、名前を Sprotes-Lit
にした
最後にこのマテリアルを Obstacle
の Sprite Renderer
や Tilemap
の Tilemap Renderer
に指定して動かしてみると
これはエモい!