今回は、「Line Effect」と称して、抽象的なエフェクトを作成してみました。
色が変化するラインがうねるようなエフェクトです。
リボンパーティクル(Ribbon Particle)を主に使用し表現しました。リボンパーティクルはまともに表示するのに少し工夫が要るので、本エフェクトの制作手法メモと共に記しておこうと思います。
■Particle System
リボンは、何かしらの「親に追従する」性質が備えられています。
リボン単体のエミッタを作っても何も表示されないため、親エミッタを作成します。
親エミッタ
親エミッタ側の「エミッタのプロパティ」にて、「Requires Persistent IDs」にチェックを入れます。
親エミッタに「Generate Location Event」を挿入します。
今回は「Event Type」を「Send Rate」とし、「Event Send Rate」を「60.0」としました。
親パーティクルは表示しなくて良かったので、「Sprite Renderer」を非表示にしています。
親パーティクルの動きについては、「Curl Noise Force」でランダムに散らしつつ、「Drag」でだんだん過剰になっていく動きを抑えつつ、「Point Attraction Force」で中央への引力を付けました。
リボンエミッタ
リボンエミッタの「レンダラ」に、「Ribbon Renderer」を設定します。
「プロパティ」横の「ステージ」を押し、「Event Handler(イベントハンドラ)」を追加します。
イベントハンドラプロパティにて、「ソース」に親エミッタのイベントを設定します。スポーン数もここで指定しています。(Spawn Rateなど、スポーン用モジュールは設定していません)
「Receive Location Event」を入れて、どのステータスを親から受け取るかなど設定しています。
「Scale Ribbon Width」を入れて、頭から尾にかけてリボン幅がしぼむように設定しています。
その他、「Drag」にて尾ひれの動きを緩やかな印象にしています。
Dynamic Material Parameterで色を指定しています。(Intialize Particle やScale Colorなどで色設定はしていません)
「Scale Color」モジュールの「Scale Alpha」をカーブで制御しています。
頭から尾にかけてだんだん透明になっていくように制御しています。
細かい粒子のエミッタ
続いて、リボンパーティクル周辺に大量に発生している細かい粒子のエミッタ設定についてです。リボンパーティクルの色・色変化に細かい粒子の色も合わせています。
リボンパーティクル頭部から尾部にかけての2色のカラー発色に合わせ、細かい粒子も常に2色が発生しているよう、色違いのエミッタを2種類用意。
「エミッタの更新」に「Spawn Particles from Other Emitter」を挿入し、親エミッタを指定することで、細かい粒子の子エミッタとして設定。(リボンパーティクルでない場合の親子付けはこうすることが多い)
「パーティクルのスポーン」に「Sample Particles from Other Emitter」を挿入し、親エミッタからどの要素を引き継いでくるかを設定。ここではPosition SampringをApply。
動きについてはカールノイズやドラッグなどで制御しています。
色についてはダイナミックパラメータでマテリアル側で主に設定しています。
■マテリアル
色表現について、Dynamic Parameterで設定した4パターンのRGB値をLerpで切り替える設定をしています。
LerpのAlphaにTimeと繋げた「Linear Sine」を繋げることで、動的な色変化を実現しています。Timeには、色パターンごとにTime Scale値をわずかにずらした値を掛けて、時間差をつけていろんな色に変化するよう設定しています。
上記のようなノード群のセットを2つ用意し、テクスチャのグラデーション具合で、リボンの頭と尾ひれ付近それぞれで2色になるように設定しています。
(LerpのAlphaにグラデーションを入れることで設定)