4th term 1st week - dsuz/unity-game-dev1-3d-2019 GitHub Wiki
今回のテーマ
今回は Particle System を学びます。
基本的な設定方法を学び、目標としてはゼロから新しく作れなくとも、既存のパーティクルエフェクトを編集して調整できることです。
今回の準備
先週までのプロジェクトがある人はそのプロジェクトに以下のパッケージをダウンロードしてインポートします。
ない人は新規にプロジェクトを作り、パッケージをダウンロード・インポートします。
Particle Effect を表示させる
- 新しいシーンを作る
- /Assets/Standard Assets/ParticleSystems/Prefabs/FireComplex プレハブをシーンに追加する
- シーンを実行する
- Main Camera の撮影範囲に入っていれば、Game ウィンドウにエフェクトが表示される
- エフェクトが見えない場合は Main Camera の撮影範囲を確認して、その中にオブジェクトが入るように調整する
プレビューの見方
- Scene/Hierarchy で ParticleSystem コンポーネントが追加されたオブジェクトを選択すると、Scene ウィンドウにプレビュー用のダイアログが表示される
- Play/Pause, Restart, Stop ボタンでプレビューの再生/停止, 最初から再生, 停止ができる
- Particle は複数組み合わせて表現することが多く、オブジェクトとして親子関係にあるものは親を選ぶと子もプレビューに表示されるが、親子関係にないものを複数プレビューしたい場合はオブジェクトを複数選択する
- デフォルトでは選択しているものの周りに線 (outline) が表示されるが、これを消したい場合は Gizmos の Selection Outline をオフにすれば消せる
どのようなエフェクトがあるか見る
/Assets/Standard Assets/ParticleSystems/Prefabs/ 以下にあるプレハブを表示させてみる。なお、これらのエフェクトは Standard Assets に含まれている。Standard Assets にはパーティクルを使って動作するシーンも含まれているので一度は触ってみましょう。
設定の基本(Main モジュール)
一旦戻って、Particle の基本を学ぶ。まずはプレーンな Particle を使って、最も基礎となる設定(Main モジュールの設定)を学ぶ。
Particle System のオブジェクトを作る
Hierarchy ビューでシーンのルートを右クリックして GameObject > Effects > Particle System を選び、Particle System コンポーネントが追加されたオブジェクトを作る。
各パラメーターの意味
まずはよく使うモジュールのパラメーターを確認していく
Main モジュールのパラメーターを確認していく
パーティクルの全体的な設定を行う Main モジュールを見ていく。まずはすぐに確認できるものから試していく。
- Looping: エフェクトをループ再生する
- Duration: 再生時間(Delay は含まない)
- Start Delay: 開始時の遅延
- Start Lifetime: パーティクルの生存時間
- Start Speed: 開始時のスピード
- Start Size: 開始時のサイズ
- Start Color: 開始時の色
- Gravity Modifier: 重力の影響を受ける係数
- Simulation Space: Local だと Transform に合わせてパーティクルも動く。World だと動かない
- Simulation Speed: Particle 再生の TimeScale に対する係数を設定する(Delay も含む)
- Delta Time: DeltaTime を使うか、Unscaled Delta を使うかを選ぶ - つまり Time.timeScale に影響されない実時間を使うか、それとも影響された deltaTime を使うか選ぶ
- Scaling Mode: 親の Scale を継承するかどうかを設定する。Hierarchy だと受ける。Local だと受けない。
- Play On Awake: オブジェクト生成時に再生する
- Max Particles: 放出されるパーティクルの最大数
- Stop Action: パーティクルの再生が停止した時に何が起きるかを設定する
※Unity の言語を日本語に切り替えると、日本語訳された Tooltip が表示されるので理解に役立つかもしれません。
既存のパーティクルを編集してみる
-
Standard Assets のプレハブを編集してみる
-
ExplosionMobile の Start Color を変えてみるのがわかりやすい
-
このように「パラメーターの意味を確認する」>「変更した時にどう変わるか確認する」>「既存のものを編集してみる」という順番でやってみると学びやすい
Emission モジュール
Emission モジュールでは Particle の放出量を決める。
- Rate over Time: 時間当たりの放出数
- Rate over Distance: 移動距離当たりの放出量
- Bursts: Time, Count, Cycles, Interval で「どのタイミングで」「いくつのパーティクルを」「何回」「どれくらいの間隔で」放出するか決める。なお Interval を 0.02 より小さくすると、放出されるパーティクルが少なくなる
既存のパーティクルを編集してみる
ExplosionMobile の Sparks を編集してみるとよい
Shape モジュール
Shape モジュールではパーティクルが放出される形状を設定する(パーティクルそのものの形ではない)。
- Shape: 形状を決める。Shape の設定によってパラメーターが変わる。形状は gizmo として表示される
- Texture: テクスチャを貼る
- Position, Rotation, Scale: パーティクル射出方向を制御する
Color over Lifetime モジュール
Color over Lifetime モジュールでは時間(寿命)経過に伴ってパーティクルの色を変化させる。
Size over Lifetime モジュール
Size over Lifetime モジュールでは時間(寿命)経過に伴ってパーティクルのサイズを変化させる設定をする。
- Separate Axes: デフォルトでは x, y, z 軸すべてのサイズが変化するが、これを有効にすると x, y, z 軸それぞれにサイズ変化を設定することができる
- Size: 大きさを設定する
Render Mode モジュール
パーティクルの形、マテリアル、表示順などをパーティクルそのものの表示に影響する。
- Render Mode: Billboard ではそのまま表示する。Stretched Billboard では延ばして表示する。
- Material: パーティクルにマテリアルを指定する
- Pivot: パーティクルの位置をずらす軸を設定する
参考
- Unity パーティクルシステム 基本説明
- Unity パーティクルシステム超入門
- Unity ゲームエフェクト入門(書籍)
- Unity ゲームエフェクト マスターガイド
- ネットで検索するなら "particle" "prewarm" "start speed" "start delay" のようなキーワードで検索するとよい
課題
以下のようなものを作成せよ。
ヒント
- 上記の例では Explosion プレハブを使っている
- Sphere が Plane に衝突したら、プレハブを生成して Sphere を破棄している