竹馬ボーイ(仮)【PART18】~足元に影をつける~

LINEで送る
Pocket

004

ステージの見た目は前回まででひとまず確認できたので、今回は影の処理を色々と試行錯誤しました。結論から言ってしまうと、今作ではキャラクターの足元に丸い影を落とす処理にしました。あまり目立たないので「コレ、必要か?」と思う人もいるかも知れませんが、この影の必要性も含めて色々と説明もしていきたいと思います。

 

目次

影無しの状態

001

今までの影がついていない状態がコレです。3Dモデルは光源の影響で陰影ができていますが影がないので、何だか違和感を感じますね。

 

リアルタイムな影を付ける

002

ひとまず最初に、光源からリアルタイムな影を付けてみました。キャラクターの足元に竹馬の影が映っているのが分かるでしょうか?

「Edit」→「Project Settings」→「Quality」から以下のような設定をインスペクタービューに表示します。

006

まず「Shadows」の項目を変更します。

「Disable Shadws」…影無効

「Hard Shadows Only」…Hard Shadowのみ

「Hard and Soft Shadows」…Hard ShadowとSoft Shadow

Hard ShadowはSoft Shadowに比べるとあまりリアルではない分、処理が少ない影です。調べてみるとどうやらモバイルではそもそもSoft Shadowは使えないっぽいようなので、Hard Shadowを設定しました。あとは下の項目で影のクオリティを色々と設定できます。

で、実際に影を設定してAndroid端末で動かしてみましたが、やっぱり処理が重く、フレームレートがかなり低下しました。動かないオブジェクトはライトをBakedするなり、処理を軽くする方法も色々とありそうですが、今回のゲームは動かないオブジェクトがそもそもそこまで重要でもないので、優先度を考えて手を出すのをやめました。

影も含めて、この「クオリティ設定」はビューの一番上にある「Levels」でレベルごとに設定できます。各端末ごとにデフォルトのレベルも変更できるので、出力する端末の設定と確認を忘れずにしておきましょう。ちなみにPCとモバイルで同じレベルに設定したら、PC上では処理が軽すぎて挙動がおかしくなったので、デフォルトのレベルを変えています。

 

丸影を設定する

リアルな影は重すぎるので、最終的にキャラクターの足元に丸影を表示する方法にしました。ゲームではよく見る表現方法ですね。

設定は難しくなく、デフォルトでインポートできる「Standard Assets」にプレハブが入っています。インポートしていない人はしてみると良いです。

「Standard Assets」→「Effects」→「Projectors」→「Prefabs」

ここに入っている「BlobShadowProjector」がそれです。

007

こいつを影を映したい足元より少し上に設置します。足元についてくるようにするには親子関係にするなり、足元と同じ座標になるよう書いたスクリプトを入れるなりすればOK。私は今回後者にしています。竹馬の両足とキャラクター(馬に乗っている人)の3つに影を設定しました。

008

あとは、地面にだけ影を描画したいので「Ignore Layers」で影を描画したくないオブジェクトは無視するよう設定します。このままだとキャラクターの足にまで影がついてしまうので、キャラクターだけ影を無視するようにしました。(元々オブジェクトをレイヤー分けしておく必要がある)

さらに今回は、「Orthographic」のチェックを外し、オブジェクトの位置に関係なく影の大きさが一定になるようにしました。

 

影を付ける意味

ひとまずこれで影の処理は終わりました。ただ、光の当たり方に対してリアルな影のつき方ではないですし、一見してつける意味があるのか分からない位地味なものです。しかし影があるとないとじゃプレイした時の感覚が大違いです。特に3Dゲームの場合、キャラクターが地面に設置しているよう感じさせるには影は非常に重要です。また、例えばキャラクターがジャンプして空中にいる時などに「あぁ、このままだとあそこに着地するな」といったような予測を立てさせる役割もあります。実際3Dゲームにはほとんど影がついていますが、影のないゲームを作ってみると、そのプレイ感覚の気持ち悪さが良く分かります。

皆さんもゲームを作っていて「何かおかしい」と思ったら、キチンと影がついているかどうかを確認してみて下さい。

 

さて、次回は音関係の処理を進めようと思います。まずは歩いた時の効果音(SE)周りですかね。

 

スポンサーリンク

スポンサーリンク

LINEで送る
Pocket