今回はワールドで炎を表現する方法の例を紹介します。
UnityのParticle Systemを使ってシンプルな炎をつくってみましょう。

パラメータ設定一覧
今回設定するパラメータの一覧を掲載します。
後ほどひとつひとつ解説していくので、まずは同じように設定してみてください!
- Hierarchyを右クリック、または上部メニューのGameObjectから、Effect>Particle Systemを選択して新しいParticle Systemオブジェクトを作成します。
- Particle SystemのInspectorで、パラメータを以下のように設定します。Emission, Shape, Color over Lifetime, Size over Lifetimeの各モジュールはチェックがついた有効化状態になっているか確認しましょう。
- Start Lifetime:3
- Start Speed:0
- Gravity Modifier:-0.1
- Emissionモジュール>Rate over Time:30
- Shapeモジュール>Radius:0.5
- Color over Lifetimeモジュール
- Color:クリックしてGradient Editorを開き、左側を黄色、右側を赤にする
- Size over Lifetimeモジュール
- Size:クリックしてCurve Editorを表示し、なだらかな右下がりのグラフを選択

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

各パラメータの解説
ここから各パラメータについて解説していきます。
パラメータをいじると、どんな変化が起きるのかを実際に操作しながら試してみてください。
炎の高さなどを変える──Start Lifetime
Particleが生成されてから消滅するまでの秒数を設定します。
今回の例では炎の高さなどが変わります。

炎の勢いを変える──Start Speed
Particleが発射された時の速度を設定します。今回は0に設定し、次のGravity Modifierで速度を調整します。
火炎放射器のような勢いのある炎では0以外の値にしてみてもいいかもしれません。

炎の立ち上がる速さを変える──Gravity Modifier
Particleにかかる重力の影響の大きさを設定します。今回はマイナスの値を設定することで、落下ではなく上昇していくように設定しました。
変更すると炎の立ち上る速さが変わります。穏やかな炎では絶対値を小さく、激しい炎では大きくしてみるといいでしょう。

炎の密度を変える──Emissionモジュール>Rate over Time
1秒あたりに生成されるParticleの数を設定します。
Particleの密度が変わるので、例えば速度を変えたときなどに密度が低くなってしまったら大きくしてみましょう。

炎の範囲を変える──Shapeモジュール>Radius
Particleの発生位置の半径を設定します。炎の上がる範囲を変えられます。

炎の色を変化させる──Color over Lifetimeモジュール>Color
Particleが生成された時から消滅するまでの間、色がどのように変化するかを設定します。今回は黄色から赤色に徐々に変化するように設定しています。
色を変えると炎色反応の表現などができるかもしれません。
炎を徐々に小さくしたり大きくしたりする──Size over Lifetimeモジュール>Size
Particleが生成された時から消滅するまでの間、大きさがどのように変化するかを設定します。
今回は右下がりのカーブを選択することで、徐々に小さくなるように設定しています。
好みの変化をするカーブを選択しましょう。こだわる場合は自分でカーブを調整することもできます。

【発展編】よりリアルな炎をつくってみよう!
Particle Systemには多くのパラメータがあります。さまざまなパラメータを使って、よりリアルな炎をつくってみましょう。


炎の揺らぎを表現する
まず、パーティクルの大きさや消えるまでの時間がばらつくようにします。
- Start LifetimeとStart Sizeのそれぞれの入力欄の横にある▼マークをクリックし、表示される一覧から「Random Between Two Constants」を選択します。入力欄がふたつになるので、以下のように入力してください。
- Start Lifetime:2, 4
- Start Size:0.5, 1
- Random Between Two Constantsに設定すると、設定したふたつの値の間のランダムな値になります。
- 続いて、Velocity over Lifetimeモジュールにチェックを入れてください。
- Orbitalの項目の右にある▼マークから「Curve」を選択します。X, Y, Zそれぞれの入力欄がカーブに変化するので、Zを選択してなだらかに増加する曲線を選んでください。
- また最大値を5に変えます。
- Velocity over LifetimeモジュールはParticleの速度を変化させる機能で、Orbitalの項目を設定すると中心の周りを回転する動きを設定できます。
- また最大値を5に変えます。
- またRadialの項目を-0.2にしてください。
- こちらは中心から外側に向かう速度を設定でき、マイナスの値にすることで中心に向かっていく動きをつくることができます。
- Orbitalの項目の右にある▼マークから「Curve」を選択します。X, Y, Zそれぞれの入力欄がカーブに変化するので、Zを選択してなだらかに増加する曲線を選んでください。
- 最後に、Noiseモジュールにチェックを入れてください。
- Strengthを0.5、Frequencyを10にします。
- Noiseモジュールを使うとParticleの動きにランダムな揺らぎを加えることができます。
- Strengthを0.5、Frequencyを10にします。

設定できたら確認してみましょう。
細かな揺らぎや、上昇気流によって渦を巻くような動きが再現され、よりリアルな炎になっています。

マテリアルを設定して炎の質感にこだわる
もっとこだわってみたい人は、マテリアルも変更してみましょう。
- Projectウインドウを右クリックして、Create>Materialを選択します。
- 作成された新規マテリアルで、Shaderを「Particles/Standard Unlit」に変更し、Rendering ModeをAdditiveにします。
- Albedoの左側にある◎ボタンからテクスチャを選択できるので、「Default-ParticleSystem」を選んでください。
- Particle SystemのInspectorの下の方にあるRendererモジュールで、Materialの欄にこのマテリアルをドラッグ&ドロップしてください。

実行して確認してみましょう。炎の描画が変化しています。

さらにテクスチャなども変更して、さまざまな表現を試してみましょう。

今回はParticle Systemを使ってシンプルな炎を作成する方法を紹介しました。
Particle Systemは大きさ、速度、色などのパラメータを調整することで、様々な表現が可能です。ここで紹介した値だけでなく、自由に値を変更して試してみてください!