Unity
Effekseer

Effekseerでパワーが溢れるようなエフェクトを作る

ゲームにおいてチャージが完了していたり魔法の詠唱中だったりするときには、
キャラからパワーが溢れているようなエフェクトを付けたいですよね。

そういったエフェクトをEffekseerを使ってサクッと作りたいと思います。
今回はUnityへの組み込みまで行います。

エフェクトを作る

Power01.gif

こういう良い感じのエフェクトを作ります。

衝撃波

efk3.png

ノードタイプはリングです。
立体的な輪が広がって消えていく感じです。

パーティクル

efk4.png

ノードタイプはスプライトです。
周囲にランダムに散らしてゆっくり上に上がりつつ消えていく感じです。

ノードの生成数を無限に設定

こういう纏う系エフェクトは無限に続いて、必要になったら消えるようにして欲しいです。
↓のスクショのように、生成数のところの無限にチェックを入れて一定時間で終わらないようにしましょう。

efk.png

ゲームに組み込む

今回はUnityを使用します。
SDユニティちゃんを借りてきました。

efk2.png

SDユニティちゃんに子GameObjectを付けて、コンポーネントとしてEffekseerEmitterを追加します。
今回On/Offをコントロールしたかったので、Play On StartはOffにして、代わりにEffectControl.csを追加しました。

また、こういう無限に続くタイプは手動で停止させる必要があります。
その際Stop()を使うと瞬時に全部消えてしまい不自然です。

そういうときはStopRoot()を使いましょう。
ルートノードのみを停止させることで、子ノードの生成が止まり寿命で少しずつ消えていく演出が実現できます。

EffectControl.cs
public class EffectControl : MonoBehaviour
{
    private void OnGUI()
    {
        var emitter = GetComponent<EffekseerEmitter>();

        if (GUILayout.Button("Start Effect")) {
            emitter.Play();
        }

        if (GUILayout.Button("Stop")) {
            emitter.Stop();         // 瞬時に消える
        }

        if (GUILayout.Button("Stop Root")) {
            emitter.StopRoot();     // 少しずつ消える
        }
    }
}

実行した結果

1回目がStop()で止めたとき、2回目がStopRoot()で止めたときです。
2回目の方が自然にエフェクトが消えていきますね。

ライセンス

imageLicenseLogo.png
この作品はユニティちゃんライセンス条項の元に提供されています