【Unity】パーティクルで雪を降らせる

こじゃらこじゃら

Unityで雪を降らせる演出を作りたいんだけど、やり方が全然わからないの~😭

このはこのは

パーティクルシステムを使えばそれっぽい演出を作れるわ!

Unityのパーティクルシステムを使って雪を降らせる演出を作る方法の解説記事です。

本記事の内容を実践すると、次のような演出が実現できます。

本記事ではアセットを用いずUnity標準の機能だけで実現することを目指します。

記事の内容を読み進めるにあたっては、Unityの基本操作および基礎知識が必要になりますので、予めご了承ください。

動作環境
  • Unity2021.2.1f1

スポンサーリンク

前提条件

次のようなシーンに対して、雪を降らせる演出を追加するものとして解説を進めていきます。

パーティクルシステムの追加

ヒエラルキーウィンドウ+ボタンをクリックし、Effects > Particle Systemの順に選択します。

すると、デフォルトのパーティクルが配置されます。この状態では、湯気のように一点から上昇するパーティクルです。

パーティクルが落下するようにする

重力に従ってパーティクルが落下するようにパーティクルシステムを設定していきます。

自由落下させる

Particle SystemStart Speed0にし、Gravity Modifier重力の掛け度合を設定します。例では、Gravity Modifierを0.3としました。この値が大きくなるほどパーティクルの落下が速くなります。

雪の出現位置調整

このままでは地面から雪が降っているので、空から雪が降るようにTransformを調整します。デフォルトではオブジェクトが90度真横に倒れているので、元に戻して調整することとします。

雪の降る範囲を広げる

広い面から雪が降るようにParticle SystemShape項目を次の通り調整します。

  • Shape Boxにする
  • Scale – XとZを100など広めの値にする

雪の降る量を調整する

Particle SystemEmission > Rate over Timeの値を調整します。Rate over Timeは、単位時間辺りにパーティクルを出現させる数です。

雪を積もらせる

Particle SystemCollisionチェックを入れて有効化し、以下を設定します。

  • Type Worldにする
  • Bounce 0にする
  • Radius Scale – 必要に応じて調整。小さくなるほど地面に埋もれる。
  • Collision Quality > Collides With – 必要なら調整。レイヤーを絞るほど処理が軽くなる。

雪が消えるまでの時間調整

必要に応じて、雪が出現してから消えるまでの時間を調整します。

パーティクルの生存時間は、Particle SystemStart Lifetime項目より設定できます。

この項目を増やす場合、パーティクルの最大描画数を超えてしまい、パーティクルが途切れ途切れに出現するようになってしまう可能性があるので、その場合はMax Particlesの値を大きくします。

注意

Max Particles値を大きくしてパーティクルの描画数を増やすと描画パフォーマンスが落ちてしまう可能性があるため、ご注意ください。

雪に揺らぎをつける

このままでは、雪がまっすぐ下に落ちる動きになっているため、揺らぎを付けて雪らしくします。

Particle SystemForce over Lifetimeチェックを入れて有効化し、項目を以下の通り設定します。

  • 右三角Random Between Two Constantsにする
  • 1段目の(X, Y, Z)(-1, 0, -1)
  • 2段目の(X, Y, Z)(1, 0, 1)

なお、力加減のX,Y,Zの部分はお好みによって変更して構いません。

また、このままだと地面に積もった雪が滑ってしまうため、Particle System > Collision > Dampen項目1に設定します。

雪が自然に出現・消滅するようにする

このままでは、地面に積もった雪が一瞬で消えてしまうため、フェードアウトして自然に消えるようにします。また、雪が空から出現する時もフェードインさせるようにします。

Particle SystemColor over Timeチェックを入れColor項目の色部分をクリックし、動画のように開始と終了時点のアルファ値を0にし、中間が255になるように設定します。

パーティクルを雪の結晶にする

パーティクルを雪の結晶にしたい場合の手順です。

まず、雪の結晶テクスチャをインポートし、パーティクル用のマテリアルを設定します。

本記事では、次の雪の結晶テクスチャを使用することとしました。

以下、テクスチャのインポートからマテリアルの設定までのです。

そして、Particle SystemRender > Materialに作成した雪の結晶用マテリアルをドラッグ&ドロップで適用します。

すると、テクスチャが雪の結晶に変わりますが、向きが真っすぐのままです。

Particle System > Start Rotation右三角よりRandom Between Two Constantsを選択し、角度の上限と下限を動画のように設定します。

雪のサイズ調整

必要に応じて雪のサイズを調整します。

調整はParticle System > Start Sizeより行います。例では雪が少し大きすぎるので0.7に縮小しています。

実行結果

ここまでの手順を実施した最終結果です。

さいごに

アセットの力を借りずに、一からパーティクルシステムで雪を降らせる方法を解説しました。

手順の流れを押さえておくと、パーティクルシステム系のアセットをカスタマイズする時に役立つかもしれません。

描画のパフォーマンスを求める場合はシェーダー側でパーティクル処理を行ってしまう方法もありますが、今回はより多くの方が実践しやすいオーソドックスな方法を紹介しました。

お役に立てれば幸いです。

参考サイト

スポンサーリンク