実世界では遠くの景色は段々と霞がかって見えなくなっていたり、山の中など霧が発生し周りが見づらい状況があったりします。
Unityのゲームの世界にそのような霧は簡単に発生させる事が出来ます。
便利ですねぇ(^-^)
Unityで霧を発生させる
Unityで霧を発生させるのに簡単な方法が2つあります。
一つ一つやり方を見てみましょう。
LightingでFogを設定する
まずはLightingの設定でFogを適用する方法です。
UnityのメニューからLightingを選択しウインドウを開きます。
Lightingウインドウを開いたら下の方にあるFogの項目にチェックを入れます。
Fog Colorで霧の色、Fog Modeで霧のモード設定が出来ます。
Fog Modeは3つあり、
があります。
LinearではStartで霧が発生する距離、Endでそれ以降の距離では霧で見えなくなる距離を指定します。
↑の例ではカメラの描画位置から霧が発生し、10m以降では霧で周りが見えなくなります。
Exponentialは指数関数的にExponential Squaredは指数乗で霧が増えていくモードのようです。
Exponential Squaredの方が霧が深くなる距離が早いかも?
Densityで霧の増えていく深さを設定します。
↑のような設定です。
Fogを有効にするとGame画面で霧が表示されるので、パラメータを調整し好みの設定を探すといいと思います。
↑のような感じで霧が発生しました。
StandardAssetsのEffectで霧を発生させる
LightingのFogの設定を有効にすれば霧を発生させる事が出来ましたが、UnityのStandardAssetsのEffectフォルダにあるスクリプトをカメラに設定する事でも霧を発生させる事が出来ます。
Unityの新しめのバージョンではImage EffectではなくPostProcessingStackを使用してください(Image Effectsは古い機能になります)。
ゲームの世界を表示しているカメラのインスペクタでAdd ComponentからImage Effects→Rendering→Global Fogを選択します。
検索窓でGlobal Fogを入れて検索した方が早いです。
↑のようにスクリプトを設定するとGameビューではすでに霧が発生しているはずです。
バージョンによっては設定項目違うかもしれません・・・・・(^_^;)
Distance Fogにチェックを入れると距離によって霧が深くなるのかも
Exclude Far Pixelsにチェックを入れると遠い場所は霧を除外するようです(空とか)
Use Radial Distanceにチェックを入れると放射状の距離で霧を深くするようです。
Height Fogにチェックを入れると霧の高さ制限を加えた霧を発生させます(上記の設定とは別に発生するみたい?)
Heightは霧の発生する高さを設定します。
Height Densityは霧の深さ
Start Distanceは霧が発生する距離
ですね。
Global Fogスクリプトでは霧の設定をする事が出来ますが色の変更が出来ません。
霧の色の設定はデフォルトではLightingのFogの設定を利用するようです。
おそらくGlobal Fogのシェーダーの設定でそうなっているんだと思いますがシェーダーがわからんのでなんとも言えません。
そこでGlobal Fogの設定で霧を発生させたい時はLightingのFog Colorを変更しFogを無効化します。
試しに設定してみましょう。
Fogを有効化し、LightingのFog Colorを黒に設定した後Fogのチェックを外し無効化します。
↑のように色を変えたらチェックを外します。
色を変える時は一旦有効化しないと出来ないので有効化しています。
カメラに設定したGlobal Fogは↑のような設定をしました。
Gameビューで確認してみましょう。
↑のようにGlobal Fogの設定を使ってLightingのFogのFog Colorの色で霧を発生させる事が出来ました。
黒い霧ですね・・・・怖い(゚ロ゚
終わりに
わたくしが大好きなホラーゲームでは必ずと言っていいほど霧が発生してますが・・・(^_^;)
そういう怖い場面を演出したい時に今回のように霧を発生させる事が出来れば雰囲気が出てきますね(^_^)v
霧を濃くして近くしか見えないようにすれば敵の接近が解り辛いので緊張感のあるゲームも作れそうだな・・・・ゴニョゴニョ。