Unityでフォグ(霧)をかける方法はもちろんあると思うんですが、ここでは自前でどのようにしたらフォグの効果を出せるのか、説明します。例えば遠くから敵が攻めてくるときなど、遠くで敵を生成してこちらに近づける、のようにしたいことがあります。ここで敵の生成の瞬間が「ポン!」みたいにいきなりだとみっともないですよね。霞んだ遠くからだんだん近づいてきて形もはっきりして……がいいでしょう。そんなとき、遠くにフォグをかけるのです。
Quad(平面)を何枚か作ります。試していませんがPlaneでもよいと思います。これに白い画像を貼り付け、視線と垂直に、遠くに間隔を少しずつあけて配置します。画像はα値を例えば0.2くらいに変更しておきます。α値は透過の度合いを表す数値ですから、こうすると敵がQuadを通り抜けるたび形がはっきり見えるようになります。遠くの景色はQuadを何枚も通った先なので白っぽく煙った感じに見えます。大体こんな感じなのですが、具体的には次のようにします。
マテリアルを作っておき(Rendering Mode はTransparentとする)、白の画像をマテリアルのAlbedoへセットします。Quadにこのマテリアルをアタッチ。α値の変更は手作業でもいいですが、コードでは以下で0.2にできます。goFogQuadはQuadのゲームオブジェクトで、これはあらかじめ取得しておきます。
Color color = new Color(1f, 1f, 1f, 0.2f);
goFogQuad.GetComponent<MeshRenderer>().material.SetColor("_Color", color);
"_Color"とは? QuadにアタッチしたマテリアルのShaderのところの3点(縦の並び)をクリックして「Select Shader」を選ぶとPropertiesのところに「_Color Color(Color)」とあります。これでSetColor()で色を変更するための第1引数は"_Color"とわかる、ということらしいです(ネットの情報です。実験で確かめました)。
もちろん風で霧がサーッと流れたり、……というようなことはできませんが、手軽にフォグをかけたければこれで十分なこともあるでしょう。言語は違いますが、ぼくはゲームでこれを使ったことがあります。
UIのPanelのα値を変える方法は既に書きました。
対象が違うと(今回はQuad)方法も異なります。混乱したり忘れたりしそうなのでまとめておきました。
6月の中旬頃から仕事(学校)がキツかったです。これまでとは成績のつけ方がいろんな点で異なっており、疑問の点をいちいち聞かなければならなかったのがストレスでした。学期末が近づいても「いつまでに何をすべきか」がはっきりせず、他の講師の先生も「何だかアセアセしていて、落ち着きません」と言っていました。学校によっては毎学期末、「●月×日までに▲▲」みたいな予定が冊子になって全員に配られたりするんですが、そういうのはナシ。他の学校のやり方を押しつけるつもりは全くありませんが、合理的かどうかは考えればわかるはず……と感じたことが何回か。仕事をする上での注意点はまとめたので2学期以降はある程度楽になると思います。