Unityで霧を発生させる

実世界では遠くの景色は段々と霞がかって見えなくなっていたり、山の中など霧が発生し周りが見づらい状況があったりします。

Unityのゲームの世界にそのような霧は簡単に発生させる事が出来ます。

便利ですねぇ(^-^)

スポンサーリンク

Unityで霧を発生させる

Unityで霧を発生させるのに簡単な方法が2つあります。

一つ一つやり方を見てみましょう。

LightingでFogを設定する

まずはLightingの設定でFogを適用する方法です。

UnityのメニューからLightingを選択しウインドウを開きます。

WindowメニューでLightingを選択

Lightingウインドウを開いたら下の方にあるFogの項目にチェックを入れます。

LightingのFogにチェックを入れる

Fog Colorで霧の色、Fog Modeで霧のモード設定が出来ます。

Fog Modeは3つあり、

  • Linear
  • Exponential
  • Exponential Squared
  • があります。

    LinearではStartで霧が発生する距離、Endでそれ以降の距離では霧で見えなくなる距離を指定します。

    FogModeをLinearにする

    ↑の例ではカメラの描画位置から霧が発生し、10m以降では霧で周りが見えなくなります。

    Exponentialは指数関数的にExponential Squaredは指数乗で霧が増えていくモードのようです。

    Exponential Squaredの方が霧が深くなる距離が早いかも?

    Densityで霧の増えていく深さを設定します。

    FogModeをExponentialにする

    ↑のような設定です。

    Fogを有効にするとGame画面で霧が表示されるので、パラメータを調整し好みの設定を探すといいと思います。

    LightingのFogを有効にして霧を発生させた状態

    ↑のような感じで霧が発生しました。

    StandardAssetsのEffectで霧を発生させる

    LightingのFogの設定を有効にすれば霧を発生させる事が出来ましたが、UnityのStandardAssetsのEffectフォルダにあるスクリプトをカメラに設定する事でも霧を発生させる事が出来ます。

    ゲームの世界を表示しているカメラのインスペクタでAdd ComponentからImage Effects→Rendering→Global Fogを選択します。

    検索窓で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のチェックを外し無効化します。

    Fog Colorを変更しFogを無効化

    ↑のように色を変えたらチェックを外します。

    色を変える時は一旦有効化しないと出来ないので有効化しています。

    Global Fogの設定

    カメラに設定したGlobal Fogは↑のような設定をしました。

    Gameビューで確認してみましょう。

    黒い霧を発生させる

    ↑のようにGlobal Fogの設定を使ってLightingのFogのFog Colorの色で霧を発生させる事が出来ました。

    黒い霧ですね・・・・怖い(゚ロ゚

    終わりに

    わたくしが大好きなホラーゲームでは必ずと言っていいほど霧が発生してますが・・・(^_^;)

    そういう怖い場面を演出したい時に今回のように霧を発生させる事が出来れば雰囲気が出てきますね(^_^)v

    霧を濃くして近くしか見えないようにすれば敵の接近が解り辛いので緊張感のあるゲームも作れそうだな・・・・ゴニョゴニョ。

    参考サイト

    Unityマニュアル-Global Fog-

    スポンサーリンク

    記事をシェアして頂ける方はこちら

    フォローして頂くとやる気が出ます