パーティクル表示


投稿日:2016年12月13日 | 最終更新日:2024年5月15日

パーティクルを使うことで、炎や雪、集中線など様々なエフェクトを表現をすることができます。
使用するパーティクルは、Particleシートで設定しておく必要があります。

サンプル

リファレンス

Command 説明 Arg1 Arg2 Arg3 Arg4 Arg5 Arg6
Particle パーティクルを表示する パーティクル名
ほかのパーティクルと重複しないように
パーティクルラベル
空欄の場合パーティクル名と同じ
表示レイヤー名
空欄の場合、スプライトのデフォルトレイヤー
X座標
空欄の場合、0
Y座標
空欄の場合、0
ParticleOff パーティクルを消す 消すパーティクル名
レイヤー名の場合レイヤーの全てパーティクルを消す
空欄の場合、全てのパーティクルを非表示に
パーティクルの止め方の設定(詳細下記)

パーティクル名とパーティクルラベル

同じ素材のパーティクルを一度に複数表示するときは、パーティクル名はひとつひとつ違う名前をつける必要があるので、「Arg1に個別の名前」、「Arg2にパーティクルラベル」と入力する必要があります。
ひとつだけパーティクルを表示する場合は、パーティクル名とパーティクルラベルは同じものでも十分なので、Arg2は省略可能です。
名前は他と重複しないようにしてください。

パーティクル表示のサンプル


サンプルとして、炎、爆発、雨、雪、桜吹雪、集中線などを収録してあります。
パーティクルは自作するか、アセットストアなどから入手して追加していってください。

パーティクル表示の注意点

3Dカメラを使ったパーティクル描画

宴のカメラは基本的に、2Dカメラを使っているためパーティクルにパースがつかず、遠近感が出ません。
たとえば、雪を降らせる場合にも手前にある雪も奥にある雪も同じ大きさで描画されてしまいます。
遠近感を出すために、3Dカメラを使うにはUnityのカメラとレイヤー設定を使う必要があります。
・シーン内に3Dカメラを用意し、CulingMaskで3D用のLayerMaskを設定し、depthで描画順を調整する
・レイヤーシートで、3Dカメラが描画するLayerMaskを設定したレイヤーを作る
・Particleコマンドで、指定するレイヤーに指定する。
といった手順が必要になります。

スケーリング

パーティクル全体の大きさを調整するには、Scaling Modeなどを正しく設定する必要があります。
詳細はUnityのドキュメントなどを確認してください。

パーティクルのコントローラー

パーティクルのプレハブに消し方やセーブの有無を設定できるコントローラーをAddComponentできるようにしました。

公式では、AdvGraphicObjectParticleControllerを用意していますが、IAdvGraphicObjectParticleControllerインターフェースを継承したコンポーネントを自作することも可能です。

項目名 説明
Enable Save セーブ対象にするかどうか。falseにするとセーブされない。ある程度表示時間が長いが、セーブ再開後に表示しなおしたくないパーティクルに設定する
Stop With Children パーティクルを止める際に、子のパーティクルも止めるか。基本的にはtrueのままで
Stop Behavior パーティクルを止める際に、即座に消すか、粒子の発生のみ止めるか

パーティクルを消すときのタイプ指定

ParticleOffコマンドのArg2でパーティクルの消し方を設定できます。
基本的には即座に消すようになっているのですが、自然に消せるように「StopEmitting」を設定可能となっています。

名前 説明
空欄 パーティクルプレハブにコントローラーコンポーネントがあればそれに従う。なければ即座に消す
Clear 即座に消す
StopEmitting 粒子の新たな発生を止め、ループの場合はループを解除する。発生済みの全ての粒子の寿命が来てパーティクルの再生が完全に止まったら自動的にオブジェクトも削除される

複数のパーティクルを一度に消す場合、Arg2にタイプが指定されているとすべて同じ消し方になるので注意してください。
Arg2のタイプ指定を空欄にして、各パーティクルのプレハブコントローラーを設定すれば個別に設定することできます。