#はじめに
この記事は SLP KBIT Advent Calendar 2018 の19日目の記事です。
ふとUnityのParticleSystemだけで炎の弾とかって作れるのかなって思い、試しに作ってみたら、わりとそれっぽく作れました。
#今回作ったもの
こんな感じの炎の弾を作りました。
ここで実際に動かすことができます。
マウスで弾を撃ちたいところをクリックすると、カメラからクリックしたところに向けて、弾が発射されます。
発射された弾が、的か鳥にぶつかると、爆発します。
右上のワイプで、横から見た映像が流れるようにしているので、爆発などの様子を観察できます。
やってることはこんな感じです。
弾は、透明な球体オブジェクトに、コンポーネントとして、ParticleSystemを持たせています。
弾が指定したオブジェクト(今回は的と鳥)に衝突すると、弾は消滅します。それと同時に、衝突したオブジェクト側で、爆発エフェクト用のパーティクルが生成されます。
#弾のパーティクル
弾本体のParticleSystemの設定で、炎を表現する上で必要そうな項目をいくつか紹介します。
###Shape
今回の例では、Coneを選択しました。Coneの他にも、Sphereとか選択してもいい感じになります。
###Size over Lifetime
時間経過での、粒子の大きさを制御するところです。時間が経つにつれ、だんだん小さくなるようにしてます。
###Color over Lifetime
時間経過での色の変化を制御するところです。炎は、先端になるほど明るい色になるので、それを意識しながら設定してます。終わり際の色は、透明度を高くすると、粒子が綺麗に消えてくれます。なお、色の色相を変えると、青い炎とかが作れちゃいます。
###Renderer
Materialは、StandardAssetに入っているParticleFirecloudを選択しました。これについては、お好みで選択してください。
これらの他にも、NoiseやLightsとかを設定すると、いい感じになります。
#爆発エフェクトのパーティクル
爆発を表現する上で必要そうな項目をいくつか紹介します。基本的には、弾のパーティクルとほぼ同じです。
###Shape
爆発は、全方位に粒子が飛び出るイメージなので、ShapeはSphereを選択しました。
###Trails
粒子の軌跡を描画します。花火のような効果を出そうと思い、設定しました。なお、Trailsの描画には、RendersでTrail Materialを設定する必要があります。
#爆発エフェクトの生成
以下のコードを、的と鳥のコンポーネントに入れてます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Target : MonoBehaviour {
public GameObject ExploadObj;
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Ball")
{
Instantiate (ExploadObj, this.gameObject.transform.position, Quaternion.identity);
}
}
}
爆発のパーティクルシステムをExploadObj
に入れて、指定したタグのオブジェクト(ここではBall
)が接触すると、ExploadObj
が生成されるといった仕組みです。
#最後に
ParticleSystemを活用すれば、割と簡単に、炎の弾を作ることができました。これで思いっきり焼き鳥とか作れるな!
時間に余裕があれば、氷とか雷とかのエフェクトも作ってみたいです。
#参考
Unityマニュアル - パーティクルシステム(Shuriken)
https://docs.unity3d.com/jp/460/Manual/class-ParticleSystem.html
LemonteaのUnity部屋 - Unity パーティクル(2) 炎のエフェクト 松明風と某悪魔風
https://www.sawalemontea.com/entry/2017/09/14/220000