今回はUnityの機能である「Particle System」を使って、紙吹雪やリボンが飛び出すクラッカーのアイテムをつくってみます。


パラメーター設定
今回設定するパラメーターの一覧を掲載します。
後ほどひとつひとつ解説していくので、まずは同じように設定してみてください!
紙吹雪
まずは紙吹雪をつくります。
- Hierarchyを右クリック、または上部メニューのGameObjectから、Effect>Particle Systemを選択して新しいParticle Systemオブジェクトを作成します。
- 作成したら、まずはオブジェクトの位置と向きを調整しましょう。TransformのPositionを紙吹雪が飛び出す位置に移動してください。
- Particle SystemのInspectorで、パラメーターを以下のように設定します。
- Emission, Shape, Limit Velocity over Lifetime, Rendererの各モジュールにチェックがついて有効になっていることを確認してください。
- Loopingのチェックを外す
- Start Lifetime:1
- Start Speed:右端の「▼」を押してRandom between Two Constantsに変更し「2」「3」
- Start Size:0.05
- Start Rotation:右端の「▼」を押してRandom between Two Constantsに変更し「0」「360」
- Start Color:右端の「▼」を押してRandom Colorに変更し、さまざまな色を含んだグラデーションにする
- Gravity Modifier:0.1
- Simulation Space:World
- Emissionモジュール
- Rate over Lifetime:0
- Burstsをひとつ追加しCount = 30
- Shapeモジュール
- Radius:0.0001(最小値)
- Limit Velocity over Lifetimeモジュール
- Speed:0
- Dampen:0.1
- Rendererモジュール
- Material:Default-Line
- Emission, Shape, Limit Velocity over Lifetime, Rendererの各モジュールにチェックがついて有効になっていることを確認してください。

設定できたら実行して確認してみましょう。一瞬で消えてしまって見づらい場合は、確認のときだけ「Looping」にチェックを入れてください。

リボン
紙吹雪と一緒に飛び出すリボンもParticle Systemでつくってみましょう。
- 共通する設定が多いため、先ほどの紙吹雪のParticle Systemを複製(Ctrl+DまたはCommand+D)して、以下の設定を変更します。
- Emissionモジュール
- Bursts>Countを「5」に変更
- Trailsモジュールを有効化
- Rendererモジュール
- Modeを「None」に変更
- Trails Materialで「Default-Line」を選択
- Emissionモジュール


各パラメータの解説
ここから各パラメータについて解説していきます。
パラメータをいじると、どんな変化が起きるのかを実際に操作しながら試してみてください。
繰り返すかどうかを切り替える —Looping
「Looping」のチェックがついている場合は「Duration」の時間ごとに繰り返しParticleが発生しますが、チェックを外すと一度しか発生しなくなります。
再度Particleを発生させる場合は、Set Game Object Active GimmickやAnimationを利用してGameObject自体を一度非表示にしてから再表示する必要があります。
Scene上でプレビューする際は、Particlesパネルの「Restart」をクリックするとリセットすることができます。
紙吹雪が消えるまでの時間を変える —Start Lifetime
Particleが発生してから消えるまでの時間(秒数)を設定します。

飛び出す勢いを変える —Start Speed
Particleが発射された時の速度を設定します。
Random between Two Constantsに設定すると、それぞれのParticleで速度にバラつきが出ます。

紙吹雪の大きさを変える —Start Size
Particleの大きさを変えます。

紙吹雪の角度を変える —Start Rotation
指定した角度でParticleを傾けることができます。Random between Two Constatnsに設定することで、ひとつずつ角度がバラバラになります。

紙吹雪の色を変える —Start Color
Particleの色を設定します。Random Colorを選択してグラデーションを設定すると、グラデーションの中からランダムな色が選ばれます。

重力を設定する —Gravity Modifier
重力の影響を設定できます。紙吹雪のように軽いものは、小さめの値を設定すると空気抵抗を受けてゆっくりと落ちていく様子を表現できます。

紙吹雪がアイテムに固定されないようにする —Simulation Space
Simulation Spaceが「Local」のままだと、後ほどアイテムに設定した際に、アイテムを動かすと紙吹雪がついてきてしまい不自然な動きになります。
「World」に変更して、アイテムではなくワールド座標に追従するようにしましょう。

紙吹雪の発生の仕方を変える —Emissionモジュール
1秒間に発生するParticleの数や、特定のタイミングで一斉に飛び出すParticleの数を設定できます。
Rate over Timeを0にして、Burstsを設定することでParticleが一度だけ飛び出すようにすることができます。

紙吹雪の発生範囲を変える —Shapeモジュール
ShapeモジュールではParticleの発生範囲や飛んでいく向きを設定できます。
「Shape」が「Cone」の場合、「Radius」で根元の半径を設定できます。
今回は半径を最小にして、1点から紙吹雪が飛び出すようにします。

勢いを減衰させる —Limit Velocity over Lifetimeモジュール
Limit Velocity over Lifetimeモジュールを有効にすると、空気抵抗などによって速度が減衰していく様子を表現できます。
Particleの速度が「Speed」を超えると速度が減衰し始めます。今回は「0」なので常に減速するようになります。
減衰の強さは「Dampen」で設定でき、この値が大きいほど急激に減速します。

軌跡を表示する —Trailsモジュール
リボンはTrailsモジュールによる軌跡で表現します。
軌跡がカクカクしていて気になる場合は「Minimum Vertex Distance」の値を小さくすると滑らかになります。
表示方法を設定する──Rendererモジュール
RendererモジュールではParticleの表示方法や、マテリアルを設定することができます。
テクスチャで透過しないマテリアルを適用すると、Particleは四角い板として表示されます。
クラッカーのようなアイテムをつくる
それでは、このパーティクルを使って、アイテムを持って使ったときにパーティクルが出てくるクラッカーのようなアイテムをつくります。
- 新しい空のGameObjectを作成し、「Cracker」という名前にします。
- Crackerの子に「Models」「Colliders」「Effects」といったGameObjectを作成し、それぞれ「Models」の子に3Dモデルを、「Colliders」の子にコライダーを配置しましょう。
- 「Effects」の子に先ほどのParticle Systemを配置します。
- Crackerに「Grabbable Item」コンポーネントを追加して、手で持つことのできるアイテムにします。
- 必要に応じて持ち手の位置を示す子オブジェクトを作成し、「Grip」に設定しましょう。
- 続いて「Use item Trigger」コンポーネントを追加します。
- Down Triggersにトリガーを追加し、Targetを「This」、Keyを「effectIsActive」、Valueを「Bool」としてチェックを付けてください。
- 最後にCrackerの子、Particle Systemの親である「Effects」オブジェクトに「Set Game Object Active Gimmick」を追加します。
- Targetを「Item」、Keyを「effectIsActive」とし、さらに「Item」にCrackerを指定してください。
- 設定できたら「Effects」は非アクティブにしておきます。

設定できたら実行して確認しましょう。
Crackerを手で持ってクリックすると、一度だけ紙吹雪が飛び出すようになります。

何度も使えるようにする
このままでは一度しか使うことができないので、余力のある人はリセットして再度使える仕組みもつくってみましょう。effectIsActiveを一度Falseにすると再度使えるようになります。
例えばCrackerに「On Release Item Trigger」コンポーネントを追加し、トリガーをひとつ追加してTargetを「This」、Keyを「effectIsActive」、Valueを「Bool」にしてチェックを外すと、一度手放してから持ち直すと再び使うことができるようになります。
他にもItem Timerを使って一定時間後にeffectIsActiveをFalseにするなど、工夫してみてください。

Particle Systemをギミックやアニメーションと組み合わせることで、さまざまな演出に使うことができます。
これまでに紹介したParticle Systemの作例も、今回のようにギミックに組み込むことでより幅広い体験をつくることができるので、試してみてください!