おーみんだよ。

おーみんだよ。

プログラミング(主にUnity)や気になるニュースについて。

【Unity Particle System】魔法などの「エフェクト」を出す方法。

    f:id:bookreadkun:20190117081638p:plain

おはようございます。おーみん(@Ooooooomin_365)です。

 

現在UnityでRPGを作成中です。

今回の記事では「RPGなどの戦闘シーンにて、魔法などのエフェクトを出す方法」について書いていこうと思います。

 

イメージを持ちやすくするために完成動画を最初に載せましょう。

 

 

通常攻撃の時は普通に相手へダメージが与えられますが、魔法攻撃の際は炎のが弾けるようなエフェクトがかかっていることが分かると思います。

 

それではエフェクトのかけ方を解説していきましょう。

 

【Unity】エフェクトを出す方法

 

今回は「炎」の出し方について解説していきますが、基本的には用いたマテリアルが炎なだけなので他のエフェクトの際もやり方は変わりません。

 

エフェクトを出す方法は

 

  • Assetで適当なセットをダウンロード
  • エフェクトを出す対象物へParticle Systemを設定
  • エフェクトを出すタイミングのスクリプト作成

 

Assetで適当なセットをダウンロード

これに関してはご自身の好きなAssetをダウンロードしてください。

 

僕の場合はKTK Effect Sample Set(価格はFREE)というものをダウンロードしました。

assetstore.unity.com

 

 

エフェクトを出す対象物へParticle Systemを設定

 

エフェクトを出したい対象物のInspectorビューにてAdd Componentから「Particle System」を選択。

 

Particle Systemの一番下にあるRendererのMaterial欄に先ほどダウンロードしたエフェクトを貼ります。

 

f:id:bookreadkun:20190117082143p:plain

 

続いてエフェクトの形を決めるShape欄にて「Sphere」を選択します。

エフェクトの放出開始時の半径は小さくしたいのでRadiusも「0.01」にしておきましょう。

 

まあ、これらはご自身のお好きなように設定してください。

 

f:id:bookreadkun:20190117082717p:plain

 

続いてEmission欄を開きます。

こちらではエフェクトの放出量の度合いを設定することができます。

 

Burstsの右下の+をクリックし、Timeを「0」、Countを「100」に設定しましょう。

f:id:bookreadkun:20190117083109p:plain

 

まあ、こちらもご自身の好きなように設定してくださいな。

 

さあ、まだ続きます(笑)

炎のエフェクトを出してから徐々に消えていくように設定していきます。

 

Size over Lifetimeを選択し、黒いグラフのようなものをクリックしてみましょう。

するとInspectorビューの下にグラフが出てくると思います。

 

今回はエフェクトが徐々に消えていくように設定したいので真ん中のグラフを選択してください。

f:id:bookreadkun:20190117083549p:plain

 

最後にエフェクトを付けた対象物の名前をクリック。

今回は1度きりでエフェクトを出し終わりたいのでLoopingのチェックを外します。

 

f:id:bookreadkun:20190117083731p:plain

 

エフェクトを出すタイミングのスクリプト作成

 

それではエフェクトを出すタイミングのスクリプトを作成していきます。

僕の場合は魔法攻撃をする際に相手から炎のエフェクトを出したいので、「相手が魔法攻撃を受けた際」にエフェクトを出すようにスクリプトを作成します。

 

f:id:bookreadkun:20190117084038p:plain

 

TakeDamagedzombiefire()関数は自分で作った関数です。

ダメージを受けた際に同時にエフェクトがかかるように、同じ関数内に" GetComponent<ParticleSystem>().Play(); " を入れました。

 

あとはこのスクリプトをエフェクトを出す対象物にドラッグ&ドロップして完成です。

 

最後に

 

以上の設定を行うと以下のように「魔法攻撃」をした際にエフェクトが出るようになるでしょう。

 

 

今回は「炎」のエフェクトでしたが、他種類のエフェクトを出したい場合はRenderer欄のマテリアルにて別のマテリアルを貼り付けてくださいね!

 

何か分からぬ点などがございましたら、いつでもコメントやTwitterへ連絡ください。

 

では!

 

※他にもUnityの記事を多数書いていますので気になる方はぜひ!

 

【前シーンの状態を保持】

【Unity】シーン遷移の際に、シーンの状態を保持しておく超簡単な方法。 - おーみんだよ。

 

【オブジェクトのフェードアウト】

【Unity】オブジェクトをフェードアウトさせる簡単な方法。 - おーみんだよ。

 

【ターン制バトルのプログラム】

【Unity】複数のターン制バトルの大まかなプログラム。 - おーみんだよ。

 

【RPGの会話シーン作成】

【Unity二十話】Fungusを用いてRPGの会話シーンを作る。 - おーみんだよ。