Unity5.4のParticleSystemのTriggerとCollisionモジュールの使い方

Unity5.4では、ParticleSystemにTriggerモジュールが用意されました。これはTriggerオブジェクトを用意して、そこにパーティクルが入る(Enter)または出る(Exit)時などに、パーティクルを破棄(Destroy)するなどに使えます。またスクリプトでは、OnParticleTriggerが用意されていてここで処理ができます。

Triggersモジュールの使い方

1.対象となるトリガーオブジェクトを作成

単純にEmpty Game ObjectにBox Colliderなどを用意して良いですし、以下のように、Cubeを作ってもよいです。トリガーにするため、Colliderの「Is Trigger」にはチェックを入れます。またプリミティブのキューブの場合などは、中が見やすいように、Materialのシェーダーの「Rendering Mode」(Albedoカラーのすぐ上の項目です。)をFadeかTransparentにして、Albedoカラーのアルファチャンネルを低くして透明にしてます。

001

Is Triggerにチェックを入れる
Is Triggerにチェックを入れる

 

2. Particleを作成

Triggersモジュールを有効にして、先ほど作成した青箱をCollidersとして設定します。パーティクルが青箱の外にいる時(Outside)、青箱の中にいる時(Inside)、青箱に入った時(Enter)、青箱から出た時(Exit)の4つの状態があります。今回は、青箱の中に入って、出ていくときにParticleをKill設定にしています。つまり破棄されます。

以下の画像のように、透過した青箱の中に、白いパーティクルが入っていきますが、出ていくタイミングで破棄されているのがわかると思います。

003

004

005

Collisionモジュールについて

パーティクルは、緑の地面に反射させるためCollisionモジュールを有効にして、Worldの設定をしています。特に難しいことはなく、これを有効にするとパーティクルが跳ね返るようになります。まずはDampen,Bounceで、跳ね返る力を調整してみるのが良いです。

 

スクリプトで操作するには

Unity5.4では、OnParticleTriggerが用意されたので、パーティクルを放出したときから補足でき、先ほどのOutside,Enter,Inside,Exitの状態を確認して、パーティクルを変化させることが可能です。以下の公式では、Triggerオブジェクトに入ったタイミングで、色を変化させています。

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnParticleTrigger.html

また、スクリプトを追加するオブジェクトはParticleSystemコンポーネントがあるオブジェクトになります。私の例の場合は、青箱ではなく、Particle System自身ですので注意しましょう。最初、青箱側にスクリプトを配置して動作せず戸惑いました。

今回配布するこのプロジェクトでは、OnParticleTriggerでDebug.Logのみを出力しています。

このプロジェクトの配布

Unity5.4

http://hajimete-program.com/games/ParticleSystemWithCollision01.zip