流れ落ちる水の表現をつくる【パーティクル作例】

今回はUnityの機能である「Particle System」を使って、滝のように水が流れ落ちる表現をつくってみましょう。

パラメータ設定

今回設定するパラメータの一覧を掲載します。
後ほどひとつひとつ解説していくので、まずは同じように設定してみてください!

  • Hierarchyを右クリック、または上部メニューのGameObjectから、Effect>Particle Systemを選択して新しいParticle Systemオブジェクトを作成します。
    • 作成したら、まずはオブジェクトの位置と向きを調整しましょう。TransformのPositionを置きたい場所(この位置が流れ落ちる根本になるので高い位置)に移動してください。
    • また、RotationのXを0にして、横向きにParticleが出てくるようにします。
  • Particle SystemのInspectorで、パラメータを以下のように設定します。Emission, Trails, Rendererの各モジュールにチェックがついて有効になっていることを確認してください。
    • Start Speed:1
    • Start Size:0.1
    • Gravity Modifier:1
    • Emissionモジュール
      • Rate over Time:20
    • Trailsモジュール
      • Die with Particles:チェックを外す
      • Color over Trail:Gradientに変更して透明→白→透明(後述)
    • Rendererモジュール
      • Render Mode:None
      • Trail Material:Default-Line

TrailsモジュールのColor over Trailの設定で使うGradient Editorの操作について説明します。

  • Color over Trailの欄にある▼ボタンを押し、Gradientを選択すると、Gradient Editorでグラデーションが設定できるようになります。
    • Gradient Editorでは色と透明度の変化を設定できます。カラーバーの上側に透明度のキー、下側にカラーのキーがあり、設定するとTrailの色が左から右に変化していきます。
    • 五角形のキーをクリックし、その下の「Color」または「Alpha」の項目でキーの値を設定できます。
    • また、キーをドラッグで移動したり、キーのない位置をクリックすることで新しいキーを追加したりといったこともできます。

設定できたら実行して見た目を確認してみましょう。

各パラメータの解説

ここから各パラメータについて解説していきます。
パラメータをいじると、どんな変化が起きるのかを実際に操作しながら試してみてください。

水の勢いを変える──Start Speed

Particleが発射された時の速度を設定します。
勢いよく水が噴き出しているような場合は値を大きくしてみましょう。

水の幅を変える──Start Size

Particleの大きさを変えます。
今回はそれぞれの水のすじの太さになります。

流れ落ちる速さを変える──Gravity Modifier

重力の大きさ(倍率)を設定できます。
大きいほど速く、小さいほど遅く落ちることになりますが、今回は重力に従って流れ落ちる水なので1でいいでしょう。

水の量を変える──Emissionモジュール

EmissionモジュールはParticleの発生量を変えることができます。
大きい値にするとたくさんの水が流れているように見えます。

軌跡を表現する──Trailsモジュール

今回はParticleの軌跡で流れる水を表現します。

Die with ParticlesはParticleが消滅すると同時に軌跡も消える設定ですが、軌跡が途中で急に消えてしまうような印象になってしまうため、今回は使いません。
Color over Trailで軌跡の色の変化を設定できます。自然に現れて消えるよう、最初と最後を透明にしておきましょう。

表示方法を設定する──Rendererモジュール

RendererモジュールではParticleの表示方法や、マテリアルを設定することができます。

今回はTrailだけを表示するため、Render ModeをNoneにしてParticleを表示しないようにします。
Trailsモジュールを有効にするとTrail Materialという項目が追加されるため、そこに軌跡のマテリアルを設定しておきます(今回はデフォルトで用意されているものを使います)。

【発展編】水飛沫が出るようにしてみよう

流れる水が地面に当たったときに水飛沫が出るようにしてみましょう。
「Particleが地面に当たったときにそこから別のParticleが出る」という仕組みをつくっていきます。

  • Hierarchyで滝のParticle Systemを右クリックして、子オブジェクトとして新しいParticle Systemを作成しましょう。このParticle Systemは以下のように設定します。
    • Start Size:0.1
    • Gravity Modifier:1
    • Emissionモジュール
      • Rate over Time:0
      • Burstsの+ボタンで項目を追加し、Countを10に
    • Shapeモジュール
      • Shape:Sphere
      • Radius:0.0001(最小値)

設定できたら親のParticle SystemのInspectorに戻ります。

  • 新しく「Collision」「Sub Emitters」モジュールを有効化し、以下のように設定します。
    • Collisionモジュール
      • Typeの下にある欄の+ボタンで項目を追加し、地面の位置を示すGameObjectを選択
      • Lifetime Loss:1
    • Sub Emittersモジュール
      • 最初の項目を「Collision」に変更
      • その隣の欄に子のParticle Systemをドラッグ&ドロップ

CollisionモジュールはParticleがコライダーや一定の平面と衝突したときに、跳ね返ったり消滅を早めたりといった事ができます。Planesを選択すると、指定したオブジェクト位置を基準とした平面に衝突するようになります※。
PlanesからWorldに変更することでワールドに設置したコライダと判定することもできますが、処理が重くなってしまうので、特に必要ない限りは平面だけを指定することをオススメします。

※指定したオブジェクトのコライダーではなく、そのオブジェクトの原点位置の平面と衝突します。

Sub Emitterでは一定の条件を満たしたときにParticleから別のParticleを発生させることができます。
CollisionにするとCollisionモジュールで衝突判定が起きたときにParticleを発生させられます。
Inheritで項目を指定することで、親のParticleから子にパラメータを引き継ぐことができます。例えば親のParticleで色を変更したときなどに使ってみると面白いでしょう。


今回はParticle Systemを使って流れ落ちる水の表現を作成する方法を紹介しました。
動きや色などの変化だけでなく、Sub Emitterなども活用して様々な表現に挑戦してみましょう!

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