今回はUnityでエフェクトを使って演出をしてみます。
敵キャラ登場時に何の演出もないと、いつどこに出現したのかがわかりませんし、いきなり攻撃された!なんて事にもなりかねません。
(いつのまにか登場させたいという場合は演出はいりませんが)
敵の出現方法は
を参照してください。
演出と言ってもどんなことをすればいいのか?
と思いますが、星のようなものが出現場所に現れる、出現した時に効果音を鳴らすとわかりやすいと思います。
効果音はまた別の記事でやる予定なのでそれまでお待ちを(^。^)
今回は星のような見てわかる演出を使ってみます。
エフェクトをAssetStoreで探す
エフェクトをAsset Storeから探してみます。
UnityメニューのWindow→Asset StoreまたはCtrl+9でAsset Storeウインドウを開きます。
All Categoriesのビジュアルエフェクト→パーティクルシステムにチェックを入れ、
PricingのFree Assetsにチェックを入れて無料のものだけにチェックを入れます。
敵が出現した時に表示したいエフェクトをインポートしてください。
わたくしはMegaToonFXLiteというアセットをインポートしましたが現在はなくなっている?ようです。
エフェクトの使い方
インポートしたエフェクトのプレハブの種類はいくつかあるのでそこから選びます。
MegaToonFxFreeSample→Prefab→MagicCircleがよさげなので、これをエフェクトとして使います。
エフェクトはそのままシーン上に配置するのではなくGameObject.Instantiateを使ってスクリプトからシーンに登場させます。
そのスクリプトの名前をAppearEffectとし、そこにスクリプトを書いていきます。
スクリプトからエフェクトを発生させる
スクリプトからエフェクトプレハブをインスタンス化する処理を記述していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using UnityEngine; using System.Collections; public class AppearEffect : MonoBehaviour { // 出現させるエフェクト [SerializeField] private GameObject effectObject; // エフェクトを消す秒数 [SerializeField] private float deleteTime; // エフェクトの出現位置のオフセット値 [SerializeField] private float offset; // Use this for initialization void Start () { // ゲームオブジェクト登場時にエフェクトをインスタンス化 var instantiateEffect = GameObject.Instantiate (effectObject, transform.position + new Vector3(0f, offset, 0f), Quaternion.identity) as GameObject; Destroy (instantiateEffect, deleteTime); } } |
まずはエフェクトをインスペクタ上で設定できるように[SerializeField]アトリビュートを付けeffectObjectフィールドを宣言します。
エフェクトは一定時間経過したら削除したいので、その為の秒数(deleteTime)をインスペクタで設定出来るようにしています。
敵キャラクターの基点が足元になっていると、エフェクトが見えない事もあるのでオフセット値で調整出来るようにします。
次に敵キャラが登場する時のエフェクトは、敵が出現した時に1回だけ効果を発揮させたいので、Startメソッド内に処理を記述する事にします。
Destroyを使うと第1引数に削除するゲームオブジェクト、第2引数に何秒後に削除するかを指定して削除出来ます。
第2引数を指定しなければ即座に削除されます。
エフェクトが現れる位置はワールド座標(シーン上の位置)の敵キャラが現れる位置に合わせます。
今回のエフェクトは敵キャラと親子関係にはしていないので、シーン直下に配置されることになります。
(エフェクトのインスタンスを敵キャラの子要素にしていない)
敵キャラの子要素にエフェクトのゲームオブジェクトを設定してしまうと敵と一緒にエフェクトが動いてしまいます。
削除するまでの秒数を変更してどのぐらいエフェクトを続けるのか調整してみると面白いです。
敵のプレハブにAppearEffectスクリプトを追加し、以下のような設定をします。
それでは実行してみます。
上のような感じになりました。
かなり毒々しい登場です。
最初に紹介したサンプルが最近追加したもので、最後に紹介したのは最初に記事を投稿した時のものです(パーティクルを入手できなくなった)。
終わりに
これで敵キャラ出現時のエフェクトが完成しました。エフェクトを使えば出現時だけでなく、攻撃が当たった時や何かにぶつかった時などにも演出をする事が出来ます。
結構短い記事になりましたが、スクリプトをそんなに記述しなくてもこれだけ出来てしまうのは本当に驚きですねぇ!という事で
次回は敵キャラ出現時に効果音を鳴らしてみます。