パーティクルを使ってワールドに雨を降らせてみる

パーティクルシステムを利用して、あなたのワールドに雨を降らせてみましょう。今回は雨のつくり方を解説します。
パラメーターを調節することで、多種多様な雨を表現することができます!

パーティクルで雨を降らせてみよう

それでは、早速パーティクルを作成して雨の表現にしていきます。

Particle System (パーティクルシステム) とはシーン内で大量の小さな 2D の画像を生成し、アニメーション化することによって、液体、雲、炎などの流体を表現することができる機能です。詳しくはUnityの公式ドキュメントか、下記の記事をご参照ください!

  • まずは Unity 上部のメニューもしくは Hierarchy を右クリックして GameObject > Effects > Particle System からパーティクルを作成します。

パーティクルシステムの初期値では上空に向かってパーティクルを放出するようになっています。雨のように空から地面へ落ちるように設定していきましょう。

  • パーティクルの発生源をY軸方向に+20移動させ、X軸の角度を90に変更します。

次に雨の速度を設定します。

  • Start Speed の右にある ▼マークを押して、 Random Between Two Constants を選択し「50」と「75」 を入力してください。この2つの数字の間でランダムにパーティクルの表示される時間が決まります。

続いて雨粒の大きさを設定します。

  • Start Size を「0.1」に設定してください。

雨パーティクルの量は Emission で調節することができます。

  • Emissionのタブを開き、Rate over Time の値を変更しましょう。まずは「50」と設定しておきます。

数値を変更するとパーティクルの量が増えたことが確認できますね!

(左:初期値10 、右:変更後50)

次に雨が降る範囲を設定します。

  • Shape のタブを開き、円錐状(Cone)から Box に変更します。今回は10m x 10m の範囲に雨を降らせます。Scale の値を(10,10,1)に変更しましょう。
(左:Cone 、右:Box)

次は雨の軌跡が表現されるようにしていきます。

  • 雨の軌跡を表示するために、Trails のタブにチェックマークを入れて有効化してください。
    • チェックマークを入れるとマテリアルエラーのピンク色が表示されますが、慌てないでください。さらに下にある Renderer タブの Trail Material にマテリアルを設定すると解消することができます。

Trail Material には下記リンク先にあるような横に伸びたテクスチャーを使用します。画像を自分で用意できない方は Kenney など素材を配布しているサイトから利用規約をよく読んだ上で使ってみてください!

  • Material を新規作成し「Mobile/Particles/Additive」などパーティクルに対応したシェーダーに画像を設定します。

無事にマテリアルエラーを解消することができましたね!

Trails で雨を表現することができるようになったため、始点となるパーティクルを非表示にします。

  • Render Mode を BillBoard から None に変更してください。Rendererの設定が下記のようになっていればOKです。
    • もし雨粒も表現したい場合は Trail Material を BillBoard の設定にしておくと、雨の軌跡と雨粒を表現することができます。

再び Trails タブを開いてください。次は表示されるパーティクルの時間を変更します。

  • Lifetime の右にある ▼マークを押して、 Random Between Two Constants を選択し「0.1」と「0.2」 を入力してください。この2つの数字の間でランダムにパーティクルの表示される時間が決まります。

次にパーティクルの太さを変更します。

  • Width over Trail の値を「0.25」に変更します。

これで雨に近づいてきましたね!

雨が壁を突き抜けないようにしよう

先ほど作成した雨のパーティクルを使ってみると、天井を突き抜けて室内にまで雨が入ってきてしまいました。続いては雨が壁を貫通しないように設定してみましょう。

  • まずはパーティクルシステムを選択し、Collision タブを有効化してください。
  • Type を「World」に変更します。これによってコライダーをもつオブジェクトにパーティクルが衝突することができるようになります。
  • Bounce を「0」に設定することでコライダーに衝突したパーティクルが跳ね返らなくなります。
  • 最後に LifeTime Loss を「1」に設定します。これによってコライダーに衝突したパーティクルの表示される時間が無くなります。

どう変化したのか Scene で確認してみましょう。これで雨が壁を貫通しないようになり、室内が水浸しになることがなくなりました!

雨が地面に当たった時の跳ねを表現する

さらに Collision を有効にすることで、雨が壁や地面にあたったときに跳ねるような表現ができます。

まずは跳ねる雨のパーティクルを作成しましょう。

  • Unity 上部のメニューもしくは Hierarchy を右クリックして GameObject > Effects > Particle System からパーティクルを作成します。
  • Transform は初期化します。
  • 一度しか再生しないように Looping のチェックマークを外します。
  • 続いて  Start Speed の右にある ▼マークを押して、 Random Between Two Constants を選択し「1」と「3」に設定します。

次に飛沫を作っていきます。

  • 時間経過で次々に生成されないようにするために、「Emission」を選択してRate over Time は「0」に変更します。
  • Burst の下にある「+」マークを押して一度に生成するパーティクルの数を設定します。Count の値を「10」に設定してください。
  • 飛沫の形は Shape から円錐状(Cone)に設定します。Radius を0に近い値に設定して先端が尖った円錐の形に整えます。円錐の大きさは Scale の値を「0.1」に設定します。
  • また先ほど作成した雨のパーティクルシステムと同様に、「Collision」「Trails」「Renderer」の設定をしてください(設定値は下記画像を参照してください)。

これで雨飛沫を生成する準備が整いました。最後に雨が地面に当たった時にこれまでにつくったパーティクルが生成されるようにします。

  • 最初に作成した雨のパーティクルシステムを選択してください。
  • Sub Emitters のタブを有効化してパーティクルが生成される条件を「Death」に変更します。
    • 右の欄に水しぶきのパーティクルをドラッグ・アンド・ドロップすると雨のパーティクルの子に設定されます。
    • これでパーティクルがColliderに衝突し消滅したときに、雨のしぶきが生成されるようになります。

降水量を変更してみよう

続いては雨の量を変化させて、色々な表現ができるようにします。例として豪雨のように雨の量を増やしてみましょう。

  • Emissison のタブを開いて Rate over Time の値を「100」に増加させます。
  • 合わせて Trail のタブを開いて Width over Trail の値を増加させるとより豪雨の表現をすることができます。

Noise タブを有効化するとランダムで自然な雨を表現することができます。

  • Strength には「0.5」、Frequency には「0.1」、Scroll Speed には「3」を入力してください。
  • それぞれのパラメーターはパーティクルに与える影響力、ノイズが変化する周期、ノイズテクスチャがスクロールするスピードを表しています。これによって雨のパーティクルは少し揺れながら落ちてくるようになります。

様々な雨の例

パーティクルシステムのそれぞれの値を変更することで、様々な雨を表現することができます。紹介する値はあくまでも一例ですので、自分の理想にあった表現を追求してみてください!

普通の雨

  • 雨が降る範囲を広げるには Shape タブの Scale を変更します。
  • 範囲を広げると雨の密度が減少するため、必要に応じて Emission タブから発生させるパーティクルの数を増やしてください。

夕立のような激しい雨

  • Transform の Rotation の値を変更することで雨の降る角度を調節することができます。
  • また雨の強さを表すために Width over Trail の値を「2.5」に変更し、雨の軌跡を太くします。

しとしとと降る雨

  • 梅雨のような雨はゆったりと降雨するように Start Speed を「10~15」に変更します。
  • Speed を変更すると Trail の長さが変わってしまうため、Lifetime の値を調節してください。

さらにパーティクルについて学ぶ

Unity が公式で提供している Asset「Unity Particle Pack」を利用して、さらにパーティクルの表現を広げてみましょう!

雨関連のパーティクルは「EffectExamples > WaterEffects > Prefabs」にある「RainEffect」や「Shower」、「WaterLeak」がとても参考になります。各パーティクルの設定やパラメーターを観察することで自分の表現したい演出に、より早く近づけることができます!

「Unity Particle Pack」は雨以外にも炎や爆煙、魔法のようなエフェクトサンプルが同梱されています。Asset を観察して色々な表現ができるようになりましょう💪

記事をシェアしてワールド制作を盛り上げよう!

Cluster Creators Guide|バーチャル空間での創作を学ぶならをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む