プロジェクターを使って影の設定を行う【Unity3D】

今回は、スタンダードアセットに含まれているプロジェクターを使ってキャラクターに影を設定したいと思います。

影を設定することで、キャラクターが移動したときの位置関係を把握出来るようになります。

基本はDirectional Lightを使ってステージを照らすことになりますが、アセットストアなどからインポートしてきたモデルの場合、マテリアルに設定されているシェーダーによって影を表示出来ないものもあります。

スポンサーリンク

プロジェクターを使って影の設定を行う

今回使用するプロジェクターは、スタンダードアセットに含まれているので、インポートしていない場合は、アセットストアからインポートしておきましょう。

インポート完了したら「Standard Assets」→「Effects」→「Projectors」→「Prefabs」→「BlobShadowProjector」を影を付けたいキャラクターの子に設定します。

プロジェクターで影を設定する

私は、Small Red Dragonに設定してみました。

設定すると分かりますが、丸い影が表示されるはずです。デフォルトの状態だと影が真下に表示されないので、RotationのX値を「90」にして真下に表示させましょう。

また、「Field Of View」の値を変更することで、影の範囲を変更することが出来ます。

ignoreレイヤーの設定

プロジェクターのオンオフを繰り返すと分かりますが、キャラクター自身にも影が投影されていますね。キャラクターが暗く映ってしまい良くないので、特定のオブジェクトの影を投影しないレイヤーの設定を行います。

新規レイヤーを追加する

「Edit」→「Project Settings」を開きます。

「Tags and Layers」を選択して空いているUser Layerに適当なレイヤー名を入力します。

キャラクターオブジェクトのインスペクターからLayerのドロップダウンメニューを開いて今作ったレイヤー名を指定します。

子のオブジェクトのレイヤーも変更するか確認ダイアログが表示されますが「Yes,change children」をクリックします。

最後に、BlobShadowProjectorの「Ignore Layers」を先ほど作成したレイヤー名に変更すれば、キャラクター自身の影が映らなくなります。

キャラクター自身を影が映らなくなる

プロジェクターを設定した時点のSmall Dragonと比較すると分かりますが、キャラクター自身の影が消えてキャラクターそのものの色合いになっていますね。

複雑じゃなくカジュアルな設計のゲームの場合は、プロジェクターが便利だと思います。