【Unity Particle System】魔法などの「エフェクト」を出す方法。
おはようございます。おーみんです。
現在UnityでRPGを作成中です。
今回の記事では「RPGなどの戦闘シーンにて、魔法などのエフェクトを出す方法」について書いていこうと思います。
イメージを持ちやすくするために完成動画を最初に載せましょう。
よし。Oキーを押すと魔法攻撃も出来るようになった!
— 超おーみん@Unityでゲーム作ってます (@Ooooooomin_365) 2019年1月16日
Assetに良さげなのがあったので、パーティクルシステム使ってエフェクトを作成。
攻撃力は数段上げる代わりにMPは30消費で。
回復も、、入れようか。まあとりあえずはこれで良しとしよう。別のシーンを作成していくことにします。#unity pic.twitter.com/TzDQLF673b
通常攻撃の時は普通に相手へダメージが与えられますが、魔法攻撃の際は炎のが弾けるようなエフェクトがかかっていることが分かると思います。
それではエフェクトのかけ方を解説していきましょう。
【Unity】エフェクトを出す方法
今回は「炎」の出し方について解説していきますが、基本的には用いたマテリアルが炎なだけなので他のエフェクトの際もやり方は変わりません。
エフェクトを出す方法は
- Assetで適当なセットをダウンロード
- エフェクトを出す対象物へParticle Systemを設定
- エフェクトを出すタイミングのスクリプト作成
Assetで適当なセットをダウンロード
これに関してはご自身の好きなAssetをダウンロードしてください。
僕の場合はKTK Effect Sample Set(価格はFREE)というものをダウンロードしました。
エフェクトを出す対象物へParticle Systemを設定
エフェクトを出したい対象物のInspectorビューにてAdd Componentから「Particle System」を選択。
Particle Systemの一番下にあるRendererのMaterial欄に先ほどダウンロードしたエフェクトを貼ります。
続いてエフェクトの形を決めるShape欄にて「Sphere」を選択します。
エフェクトの放出開始時の半径は小さくしたいのでRadiusも「0.01」にしておきましょう。
まあ、これらはご自身のお好きなように設定してください。
続いてEmission欄を開きます。
こちらではエフェクトの放出量の度合いを設定することができます。
Burstsの右下の+をクリックし、Timeを「0」、Countを「100」に設定しましょう。
まあ、こちらもご自身の好きなように設定してくださいな。
さあ、まだ続きます(笑)
炎のエフェクトを出してから徐々に消えていくように設定していきます。
Size over Lifetimeを選択し、黒いグラフのようなものをクリックしてみましょう。
するとInspectorビューの下にグラフが出てくると思います。
今回はエフェクトが徐々に消えていくように設定したいので真ん中のグラフを選択してください。
最後にエフェクトを付けた対象物の名前をクリック。
今回は1度きりでエフェクトを出し終わりたいのでLoopingのチェックを外します。
エフェクトを出すタイミングのスクリプト作成
それではエフェクトを出すタイミングのスクリプトを作成していきます。
僕の場合は魔法攻撃をする際に相手から炎のエフェクトを出したいので、「相手が魔法攻撃を受けた際」にエフェクトを出すようにスクリプトを作成します。
TakeDamagedzombiefire()関数は自分で作った関数です。
ダメージを受けた際に同時にエフェクトがかかるように、同じ関数内に" GetComponent<ParticleSystem>().Play(); " を入れました。
あとはこのスクリプトをエフェクトを出す対象物にドラッグ&ドロップして完成です。
最後に
以上の設定を行うと以下のように「魔法攻撃」をした際にエフェクトが出るようになるでしょう。
よし。Oキーを押すと魔法攻撃も出来るようになった!
— 超おーみん@Unityでゲーム作ってます (@Ooooooomin_365) 2019年1月16日
Assetに良さげなのがあったので、パーティクルシステム使ってエフェクトを作成。
攻撃力は数段上げる代わりにMPは30消費で。
回復も、、入れようか。まあとりあえずはこれで良しとしよう。別のシーンを作成していくことにします。#unity pic.twitter.com/TzDQLF673b
今回は「炎」のエフェクトでしたが、他種類のエフェクトを出したい場合はRenderer欄のマテリアルにて別のマテリアルを貼り付けてくださいね!
何か分からぬ点などがございましたら、いつでもコメントやTwitterへ連絡ください。