Unityのエフェクトを使い、敵キャラの出現をわかりやすくする

記事内に広告が含まれています。

今回はUnityでエフェクトを使って演出をしてみます。

敵キャラ登場時に何の演出もないと、いつどこに出現したのかがわかりませんし、いきなり攻撃された!なんて事にもなりかねません。
(いつのまにか登場させたいという場合は演出はいりませんが)

敵の出現方法は

Unityで出現場所から一定時間毎に制限人数内で敵を出現させる
Unityで出現場所から一定時間毎に制限人数内で敵を出現させるような機能を作成していきます。

を参照してください。

演出と言ってもどんなことをすればいいのか?
と思いますが、星のようなものが出現場所に現れる、出現した時に効果音を鳴らすとわかりやすいと思います。

効果音はまた別の記事でやる予定なのでそれまでお待ちを(^。^)

今回は星のような見てわかる演出を使ってみます。

敵を登場させる時にパーティクルを表示

スポンサーリンク

エフェクトをAssetStoreで探す

エフェクトをAsset Storeから探してみます。

UnityメニューのWindow→Asset StoreまたはCtrl+9でAsset Storeウインドウを開きます。

All Categoriesのビジュアルエフェクト→パーティクルシステムにチェックを入れ、

PricingのFree Assetsにチェックを入れて無料のものだけにチェックを入れます。

敵が出現した時に表示したいエフェクトをインポートしてください。

わたくしはMegaToonFXLiteというアセットをインポートしましたが現在はなくなっている?ようです。

エフェクトの使い方

インポートしたエフェクトのプレハブの種類はいくつかあるのでそこから選びます。

MegaToonFxFreeSample→Prefab→MagicCircleがよさげなので、これをエフェクトとして使います。

エフェクトはそのままシーン上に配置するのではなくGameObject.Instantiateを使ってスクリプトからシーンに登場させます。

そのスクリプトの名前をAppearEffectとし、そこにスクリプトを書いていきます。

スクリプトからエフェクトを発生させる

スクリプトからエフェクトプレハブをインスタンス化する処理を記述していきます。

まずはエフェクトをインスペクタ上で設定できるように[SerializeField]アトリビュートを付けeffectObjectフィールドを宣言します。

エフェクトは一定時間経過したら削除したいので、その為の秒数(deleteTime)をインスペクタで設定出来るようにしています。

敵キャラクターの基点が足元になっていると、エフェクトが見えない事もあるのでオフセット値で調整出来るようにします。

次に敵キャラが登場する時のエフェクトは、敵が出現した時に1回だけ効果を発揮させたいので、Startメソッド内に処理を記述する事にします。

Destroyを使うと第1引数に削除するゲームオブジェクト、第2引数に何秒後に削除するかを指定して削除出来ます。

第2引数を指定しなければ即座に削除されます。

エフェクトが現れる位置はワールド座標(シーン上の位置)の敵キャラが現れる位置に合わせます。

今回のエフェクトは敵キャラと親子関係にはしていないので、シーン直下に配置されることになります。
(エフェクトのインスタンスを敵キャラの子要素にしていない)

敵キャラの子要素にエフェクトのゲームオブジェクトを設定してしまうと敵と一緒にエフェクトが動いてしまいます。

削除するまでの秒数を変更してどのぐらいエフェクトを続けるのか調整してみると面白いです。

敵のプレハブにAppearEffectスクリプトを追加し、以下のような設定をします。

AppearEffectスクリプトの設定

それでは実行してみます。

敵出現時のエフェクトの確認

上のような感じになりました。

かなり毒々しい登場です。

最初に紹介したサンプルが最近追加したもので、最後に紹介したのは最初に記事を投稿した時のものです(パーティクルを入手できなくなった)。

終わりに

これで敵キャラ出現時のエフェクトが完成しました。エフェクトを使えば出現時だけでなく、攻撃が当たった時や何かにぶつかった時などにも演出をする事が出来ます。

結構短い記事になりましたが、スクリプトをそんなに記述しなくてもこれだけ出来てしまうのは本当に驚きですねぇ!という事で

次回は敵キャラ出現時に効果音を鳴らしてみます。

タイトルとURLをコピーしました