今回紹介するのは、「敵キャラ出現時にエフェクト表示する方法」です。
敵キャラの出現時に演出を行う方法は複数ありますが、今回は一番簡単に実装できるエフェクトを表示する方法を紹介します。
この記事ではフリーのアセットストアにあるエフェクトを利用して、一定のいちに到達した際に敵を出現させ、出現時にエフェクトを表示しています。
敵とエフェクトの準備
この記事ではエフェクトと敵ははアセットストアのものを利用します。
エフェクトは、以下のフリーアセット「Cartoon FX Free」を利用しています。
敵には以下のフリーアセット「Kawaii Slime」を利用しています。
指定した範囲に入った際の敵の出現
開発のベースとして以前作成した「指定した範囲に入ったことをトリガーにオブジェクトを生成する方法」をベースに作成していきます。
上記の生成するオブジェクトに、敵キャラとしてKawaiiSlimeのスライムオブジェクトを設定しています。
敵の出現時にエフェクトを表示する
敵の出現時にエフェクトを表示させるために、敵の出現に合わせてエフェクトを生成するスクリプトを作成します。
エフェクトを生成するには、Instantiateを利用し、一定時間表示したあとに、オブジェクトを削除するようにします。
スクリプトには、以下の設定ができるようにしています。
- エフェクトのオブジェクト
- エフェクトが消えるまでの時間
- エフェクトの出現位置の設定
※今回この記事で利用したエフェクトは、「Cartoon FX Free」の「CFX3_MagicAura_D_Runic」を利用していますが、このエフェクトはX軸を90度回転させないとエフェクトが上を向かないので、以下のスクリプトではX軸を直接設定しています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectEffect : MonoBehaviour
{
/// <summary>エフェクト</summary>
[SerializeField]
private GameObject effectObject;
/// <summary>エフェクトが消えるまでの時間(秒)</summary>
[SerializeField]
private float deleteTime;
/// <summary>エフェクトの出現位置のY軸オフセット値</summary>
[SerializeField]
private float offsetY;
// Start is called before the first frame update
void Start()
{
//instanciate後にGameObjectにキャストする
GameObject instantiateEffect = GameObject.Instantiate(effectObject ,
transform.position + new Vector3(0f, offsetY, 0f),
//エフェクトがデフォルトで縦になっているので、
//角度を90度傾ける
Quaternion.Euler(90f, 0f, 0f)) as GameObject;
//指定時間後に削除する
Destroy(instantiateEffect, deleteTime);
}
}
作成したスクリプトを用意した敵キャラのプレハブに追加し、EffectObjectとDeleteTime、必要に応じたオフセット値を設定します。
設定が完了したら、再生して動作を確認してみます。
指定した位置に入ってオブジェクトを生成し、敵の生成時にエフェクトが表示され、時間経過で削除される表現を実装できたことを確認できました。
まとめ
今回、「敵キャラ出現時にエフェクト表示する方法」を紹介しました。
- 敵とエフェクトのアセットストアでの準備
- 指定した範囲に入った際の敵の出現
- 敵の出現時のエフェクト表示
今回紹介した方法は、エフェクトを表示するだけの簡単な方法でした。この方法だとエフェクトさえ用意してしまえば簡単にエフェクトを実装することができるので非常に便利です。
エフェクトの実装には、他にも敵が徐々に表示されながら色が変わるなど高度な手法もありますのでそれもまた紹介できたら良いなと思います。
今回の記事が、皆さんの助けになると嬉しいです。
もしこの記事が気に入りましたら、ぜひテクリエイトへのブックマーク登録をして頂けると喜びます。
以上、おつかれさまでした!
© Unity Technologies Japan/UCL