竹馬ボーイ(仮)【PART20】~パーティクルシステムでエフェクトを作る①~

LINEで送る
Pocket

002

地面に足が着いた瞬間の判定を取れるようになったので、今度はその判定時にエフェクトを付けるように設定します。Unityにある「particlesystem(パーティクルシステム)」を使えば、目的にあったエフェクトを簡単に作ることが出来ます。(パーティクル=粒子)

 

目次

パーティクルを使うには

パーティクルを使うには、まずヒエラルキービューにある「Create▾」から「particlesystem」を選択します。

009

デフォルトの状態だと、下の図のように白い粒子が上空に立ち上るようなエフェクトになっています。オブジェクトを選択するとパーティクルの動きがシーンビューでも確認できます。

010

ここからインスペクタービューの項目を色々といじって、自分の作りたいエフェクトにしていきます。

ゲームでよく使う、炎とか爆発とか花火とかのエフェクトはAssetStoreにもたくさんあるので、そちらで探して参考にしてみてもいいと思います。

 

足元に発生する2種類のエフェクト

今回は、2つのエフェクトを付けてみようと思います。まず1つは地面に足が着いた瞬間だけ、フワッと地面に広がる衝撃波。もう1つはもののけ姫に出てくるシシガミ様みたいな、足の着いた場所からウニョウニョと草が生えてくるようなエフェクトです。2つ目はなくても別にいいんですが、Unity5.5からライトモジュールやノイズモジュールなんてのが追加されて、何か楽しそうだったのでやってみたいだけです。

004

作るといっても、本当に細かく項目が設定できるので、項目を1つ1つ設定していって理想のイメージにしていくだけです。基本的にこの機能だけでも、丁寧に作れば十分見栄えの良いエフェクトを作ることができます。

まずは衝撃波の方を作りました。これには衝撃波用の絵が必要なので、下のような輪っかの絵を用意します。

008

見づらかったのでこの絵では背景が青いですが、本来背景色はありません。

006

で、この絵を中心から広がるように設定し、徐々に透明になりながら消えるようにします。1度発生したら繰り返し表示されないようにループの設定は切っておきます。

 

次にウニョウニョのエフェクトを作ってみました。特に画像等は使わずに設定しています。

005

Unity5.5で追加された「Noise」の機能を使って、まずは粒子をウニョウニョと不規則に動くように設定。その後「Trails」の設定で粒子を跡を描くようにします。根元は太く濃く、軌跡の先端になるにつれ、細く薄くなるよう設定します。

この2つのパーティクルを、空っぽのオブジェクトの親子関係にして、1つにまとめておきます。

続けて、エフェクトを発生させるのには「Prefab(プレハブ)」にしておいた方が都合がいいので、そちらも用意します。

プロジェクトビューの「Create▾」から「Prefab」を選択し、まずは空っぽのプレハブを用意します。

011

そこへ、シーンの中にあるオブジェクトをヒエラルキービューからドラッグ&ドロップして、プレハブの中に入れます。(入れるとプレハブのアイコンが水色になります)

プレハブ化はパーティクルだけでなく全てのオブジェクトに使えるUnityの中でも大切な要素なので、良く知らない人は詳しく調べてみましょう。

 

作ったエフェクトを発生させてみる

プレハブにしたエフェクトを足音のSEがあるのと同じタイミングで生成するようにしていきます。生成はInstantiateメソッドを使います。

001

生成自体は1行で出来るのですが、そのままでは足元の位置に表示されません。ですので、まず足元のオブジェクトの座標を取得し、その座標をエフェクトの座標として設定してあげました。これで上手くいくはず…と思っていたのですが1つ問題が起きました。

 

パーティクルの座標が上手く変わらない現象

ウニョウニョの方のエフェクトは問題なく足元に出るのですが、衝撃波の方は、なぜか座標が変化せず、最初の1歩目の座標に出続けてしまいます。同じプレハブ内のモノなのに何故?と意味が分かりません。しかもずっと同じ座標に出続けるならまだしも、たまに上手くいっちゃうこともあるから、さらに混乱しました。

で、2つのパーティクルの設定を比較して、色々と設定を変えながら確認していくと、どうやら衝撃波の方はループ再生(Looping)のチェックを外していることと、パーティクルを発生させる時間(Duration)の設定が短すぎるのが原因っぽいなと気付きました。でも衝撃波は1度出れば十分です。

どうしようかなと解決策を探っていると、パーティクルのオブジェクトを非アクティブ→アクティブに切り替えることで、再度パーティクルが生成されるという特性があるとの情報が。そこで地面に足が着いた瞬間に、一度パーティクルのオブジェクトを非アクティブにし、座標を指定する後にアクティブに戻す、という処理にしてみたら上手くいくようになりました。この解決策がベストな方法なのかは分かりませんが、上手くいったならそれで良し!ということで、無事エフェクトの実装も完了です。

012

↑足が地面に付いたらこんな処理に。うーん、気持ち悪いけど…まぁいいか。

こちらのサイトを参考にさせていただきました。

 

エフェクトの作業は、他にもまだあるので、一通りエフェクトを実装し終えたら動画にしようと思います。

 

スポンサーリンク

スポンサーリンク

LINEで送る
Pocket