Unity の「Particle System(パーティクルシステム)」を使えば、敵キャラクターを倒した時の見た目をかっこよく演出することができます。
今回利用した素材は以下のものになります。
プロジェクトの設定(Unity のバージョンやレンダーパイプラインの種類)と互換性がある素材を選択しましょう。素材の探し方についてはこちらの記事を参考にしてみてください。
目次
事前準備
素材によっては、事前準備が必要な場合があります。今回利用した素材もそのひとつです。事前準備の内容は、アセットストアのページに記載されています。記載内容に合わせて各自対応してください。
今回の素材で必要な事前準備は、以下の通りです。
① 素材(マテリアル)をURP用に変換する
必須ではありませんが、プロモーション用の動画や画像は、Post Processing (ポストプロセス)機能の Bloom エフェクト(②)を使用しているそうです。
※Bloom は光を強調するエフェクト
準備 ①:素材(マテリアル)をURP用に変換する場合
URP に対応していない場合、下図の左のように紫色の見た目になります。これを URP 用に変換します。
URP に対応していない
URP に対応している
Unity のツールバー「ウィンドウ」⇒「レンダリング」⇒「レンダーパイプラインコンバーター」を選択します。
「Render Pipiline Converter」タブが表示されるので以下の手順に従って、URP に変換します。
1.「Built-in to URP」を選択
2.「Material Upgrade」にチェックを入れる
3.「Initialize Converters」をクリック
4.「Convert Assets」をクリックして URP に変換する
Unity での設定
パーティクルシステムの素材「Magic effects pack / Prefabs / Hits and explosions / Explosion」を、ヒエラルキーの敵キャラクター(下図の例:Dino1)の子オブジェクトに設定します。
追加したパーティクルシステム「Explosion」のスケールなどを、ゲームに合うように調整します。
プログラミング
DinoController(敵キャラクターのスクリプト)
12 行目の「explosion.Play();」は、パーティクルシステムを実行するコードです。プレイヤーから攻撃を受けた時に実行するようにしてください。
13 行目の「Destroy(gameObject, 1.0f);」で、パーティクルシステムを親オブジェクト(敵キャラクター)ごと消すようにしています。パーティクルシステムの再生が終わるタイミング(今回は1秒間のエフェクトだった)に合わせましょう。
using UnityEngine;
public class DinoController : MonoBehaviour
{
[SerializeField] private ParticleSystem explosion;
private void OnTriggerEnter2D(Collider2D collision)
{
var attackSensor = collision.gameObject.GetComponent<AttackSensorController>();
if (attackSensor != null)
{
explosion.Play();
Destroy(gameObject, 1.0f);
}
}
}
パーティクルシステムの「コールバック」を使えばもっとスマートに親オブジェクトを消すことができます。
完成形
以上で、敵キャラクターを倒した時に視覚効果(パーティクルシステム)をつける方法の解説を終わります。