【3D】2Dスプライトに影をつける【BRP】

unity技術

2D画像に影を反映させる方法です。
Unity Tutorial – Octopath 2D Sprite Shadows And Lighting」を参考にさせていただいています。

URPプロジェクトの場合、マテリアルの段階で違った操作が必要になりそうです。

簡易版

  • オブジェクトの「Debug」で「Cast Shadows」「Receive Shadows」を設定。
  • 新規Shaderを作成。
  • 専用Shaderをコピペ、ファイル名と場所記述変更。
  • 新規Materialを作成。
  • MaterialにShaderを反映させる。
  • オブジェクトにMaterialを貼る。

2Dオブジェクト裏設定

影設定を反映させるための準備として、オブジェクト内の裏設定を変更しておきます。

オブジェクトを選択後「Inspector」タブ部分を右クリックしてメニューを出します。
Normal」から「Debug」に変更します。

Sprite Renderer」内にある「Cast Shadows」を「Off」から「On」に変更します。
他の影の影響も反映させたい場合は「Receive Shadows」にチェックを入れておきます。

これで準備は完了です。
再び「Debug」タブを右クリックして「Normal」にし「Inspector」に戻しておきましょう。

Shaderを作成

新規に「Shader」ファイルを作成します。
Assets」フォルダ内「Shader」フォルダに、新規で「Standard Surface Shader」を作成します。
※Assets内であればどこでも良さそうです。

ファイル名は任意です。今回は「Shadows」としました。
ファイル内にはすでにデフォルトでいろいろと記述されています。

作った「Shadows」ファイルの中身をすべて変更していきます。
Unity Tutorial – Octopath 2D Sprite Shadows And Lighting」動画内の概要欄にある「Complete Shader」からリンク先に飛びましょう。
そこに記述してあるシェーダーを「Shadows」ファイルにコピペして保存します。

コピペ後の注意。
Shaderファイルの名前や位置(記述)が違うので、こちらのファイル名と場所に変更します。

これで影付け用のShaderは完成です。

Materialを作成

作ったShaderをMaterialに適用させ「影付けマテリアル」として新規に作成します。

マテリアル名は任意です。今回は「shadow」としました。
作成したらそのまま「Shader」タブを変更します。

Custom」>「Shadows」と選びます。
この「Shadows」は、さきほど新規作成した「Standard Surface Shader」の「Shadows」となります。

これで影付けシェーダーを適用したマテリアルの完成です。
オブジェクトにこのマテリアルを貼れば完了です。

オブジェクトにMaterialを反映させる

作成したマテリアル「shadow」をオブジェクトに反映させます。

オブジェクトを選択後、「Sprite Renderer」内の「Material」フィールドにマテリアル「shadow」ファイルをドラッグして登録します。

コメント

  1. 背景画像に影を受ける
    それはどのような処理でしていますか?

    • 背景(床や壁)は影の影響を与えるために、3Dの平面モデルを使っています。
      PlaneやQuadのモデルに2D画像(ドット絵)をテクスチャで張り付けています。
      ドット絵テクスチャならばQuadモデルが良さそうです。

      • 上手に影が映っていたのでどういった処理をしているのか気になって質問させていただきました
        ご返答ありがとうございます