今回はUnityの機能である「Particle System」を使って、雪が降る表現をつくってみます。

パラメーター設定
今回設定するパラメーターの一覧を掲載します。
後ほどひとつひとつ解説していくので、まずは同じように設定してみてください!
- Hierarchyを右クリック、または上部メニューのGameObjectから、Effect>Particle Systemを選択して新しいParticle Systemオブジェクトを作成します。
- 作成したら、まずはオブジェクトの位置を調整しましょう。TransformのPositionを雪が降らせたい位置に移動してください。
- Particle SystemのInspectorで、パラメーターをデフォルトから以下のように設定します。
- Emission, Shape, Color over Lifetime, Noise, Collision, Rendererの各モジュールにチェックがついて有効になっていることを確認してください。
- Start Lifetime:右端の「▼」を押してRandom between Two Constantsに変更し「10」「12」
- Start Speed:0
- Start Size:右端の「▼」を押してRandom between Two Constantsに変更し「0.1」「0.5」
- Start Color:白
- Gravity Modifier:右端の「▼」を押してRandom between Two Constantsに変更し「0.01」「0.05」
- Emissionモジュール
- Rate over Lifetime:40
- Shapeモジュール
- Shape:Box
- Scale:X-30, Y-30, Z-1
- Color over Lifetimeモジュール
- Gradient Editorで上のマーカーを追加・編集し、「透明→不透明→透明」とランダムに変化するように
- Noiseモジュール
- Strength:0.1
- Frequency:1
- Scroll Speed:0.3
- Collisionモジュール
- Type:World
- Bounce:0
- Scroll Speed:0.3
- Rendererモジュール
- デフォルトのまま
- Emission, Shape, Color over Lifetime, Noise, Collision, Rendererの各モジュールにチェックがついて有効になっていることを確認してください。

設定できたら実行して確認してみましょう(雪の結晶のマテリアルはRendererモジュールの設定でできます)。
各パラメータの解説
ここから各パラメータについて解説していきます。
パラメータをいじると、どんな変化が起きるのかを実際に操作しながら試してみてください。
雪が消えるまでの時間を変える —Start Lifetime
Particleが発生してから消えるまでの時間(秒数)を設定します。
Random between Two Constantsを設定することで消える時間をランダムにすることができます。

雪が降るスピードを変える —Start Speed, Gravity Modifier
Particleが発射された時の速度を設定します。
今回は上空から降るような表現にしたいので、Start Speedは0にして、Gravity Modifierで重力がかかる強さを設定して、雪の降る速度を変えています。雪のように軽いものは、小さめの値を設定すると空気抵抗を受けてゆっくりと落ちていく様子を表現できます。

雪の大きさを変える—Start Size
Particleの大きさを変えます。
今回は、Random between Two Constantsを設定することで雪のサイズがランダムになるようにしています。

雪の色を変える —Start Color
Particleの色を設定します。今回は雪の色として白にしています。

雪の降る量を変える —Emissionモジュール
1秒間に発生するParticleの数や、特定のタイミングで一斉に飛び出すParticleの数を設定できます。
後述するShapeの範囲を広くするとまばらになるため、バランスを見ながら設定してください。

雪が降る範囲を変える —Shapeモジュール
ShapeモジュールではParticleの発生範囲を設定できます。
「Shape」が「Box」の場合、キューブで降る範囲を指定できます。

雪を消えたり現れたりするようにする—Color over Lifetimeモジュール
グラデーションを設定することで、Particleが出現してから消えるまでの色や透明度の変化を設定できます。
Gradient Editorでグラデーションの上側をクリックすると透明度のマーカーを、下側をクリックすると色のマーカーを追加できます。雪が消えたり現れたりするようにして、ランダムに見えるようにしています。

雪にランダムな揺らぎを与える —Noiseモジュール
Particleにランダムな揺らぎをつけることができます。
Strengthでどれだけ強いノイズを与えるか設定できます。値が高いほどパーティクルの動きが激しくなります。Frequencyで滑らかにするか急激に変化するかを設定できます。値が低いと滑らか、高いと急激に変化します。また、Scroll Speedを設定することでより不規則な動きをつけることができます。

雪が地面に残るようにする —Collisionモジュール
Particleが他のGameObjectと衝突した時の振る舞いを設定できます。
今回はType:Worldに設定することで、地面(コライダのあるGameObject)と衝突する振る舞いをするようにしています。Bounceでどれくらい跳ね返るか設定できます。今回は0にすることで、降ってきたパーティクルが消えるまで地面に残るようにしています。

表示方法を設定する──Rendererモジュール
RendererモジュールではParticleの表示方法や、マテリアルを設定することができます。
応用編:パーティクル自体の見た目を変える
Rendererモジュールで雪の結晶のテクスチャなどを適用すると、より多彩な表現ができます。パーティクル用のテクスチャはテンプレートワールドの「ミュージック」に色々入っているので、ぜひ試してみてください!
色を変えたり、別のテクスチャにすると灰が降ってくるような表現にできたり、色々な表現に活用できます!






















