テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】パーティクルのタイミングをTimelineで制御する

f:id:tsubaki_t1:20171021233313g:plain

今回はParticle System(Shuriken)の生成タイミングをTimelineで制御する方法についてです。

Particle Systemとタイミング制御

パーティクルのタイミングを制御する場合、多くのケースでは以下の3つのアプローチだったんじゃないかなと思います。

  • パーティクルのStart Delayで生成タイミングを調整する
  • GameObjectのアクティブを切り替えるスクリプトを記述する
  • Emit等で呼び出すコードをスクリプトから記述する
  • パーティクル生成のタイミングをAnimationEventやコルーチンで制御する

f:id:tsubaki_t1:20171021233900j:plain

この面倒な所は、スクリプトからParticleを制御する場合にはゲームを再生しないと動作が確認出来ない点が問題になります。

またStart Delayの場合は基本的に、Particle以外の要素と含めた動作を確認するのがに面倒です。

f:id:tsubaki_t1:20171021235147g:plain

まぁ、Start Delayは色々と面倒な所があるので、基本的には

  • 単一のParticle内のタイミング調整はStart Delay
  • 全体的なタイミング調整は、スクリプト(をスクリプトやAnimationEvent等から呼び出す)

といった調整になるかなと。

 

個人的には、Particleのタイミングは表現を気持ちよくする為の重要なファクターだと思っているので、この制御に特殊技能が必要になったり、何度も試すのが面倒になっていたりするのは非常に面倒な話です。

 

ほんの僅かにタイミングをズラシてみますが、結構印象が変わるものです。

f:id:tsubaki_t1:20171022110211g:plain

f:id:tsubaki_t1:20171022110443g:plain

ParticleのタイミングをTimelineから制御

微調整と制御が容易なTimelineにて、パーティクルのタイミングを制御してみます。

こちらのアプローチだと、パーティクルの生成タイミングが非常に簡単に出来るようになります。
勿論Timelineで制御する事が前提となりますので、イベントシーンや戦闘エフェクトシーン、ガチャ演出等に使えるかな?という感じです。

動作をゆっくり確認したり巻き戻したり、発生の時間をズラしたり、他のアニメーションとタイミングを合わせたり。

f:id:tsubaki_t1:20171021234711g:plain

f:id:tsubaki_t1:20171022111502g:plain

 ControlPlayableでParticleを制御する

パーティクルの制御はControl Playableで制御できます。Control Playableにパーティクルをセットすれば、Clip開始地点からパーティクルの再生が始まります。

  1. Control Trackを追加し、
  2. Add Control Playable Asset Clipを追加、
  3. Source Game Objectにパーティクルを指定

https://cdn-ak.f.st-hatena.com/images/fotolife/t/tsubaki_t1/20170921/20170921232719.jpg

https://cdn-ak.f.st-hatena.com/images/fotolife/t/tsubaki_t1/20170921/20170921232832.jpg

f:id:tsubaki_t1:20171021235823j:plain

幾つかの問題

ただこの方法、幾つかの問題が確認されています。
例えば以下の二つです。

  • SubEmitterが動作しないバグがある
  • RateOverDistanceが動作しない

SubEmitterは兎も角、RateOverDistanceは動いて欲しい所です。

 

また、バージョンアップで治りましたが初期バージョンではParticle側のマテリアル変更等が即座に反映されないといった動作も確認されました。

こちらはPreviewを二回押して(On/Offを切り替える)Timelineを再起動すれば解決します。

f:id:tsubaki_t1:20171022111721j:plain

面倒な事にTrackではなくClipにアクションするParticleを設定する機能になっています。要するに動的なバインドが面倒くさいです。
下のようなアプローチを取るか、ParticlePlayableを制御するTrackを作成すれば回避可能ですが、うーん

tsubakit1.hateblo.jp

その代わり1トラックに複数のParticleをセット出来るといえばメリットはありますが…

f:id:tsubaki_t1:20171022001554j:plain

関連

tsubakit1.hateblo.jp