コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity 入門】全方位シューティングを作る 第12回 爆発エフェクトの表示

目次

前回のチュートリアル

はじめに

前回は、弾が敵に当たった時に表示する爆発エフェクトを作成しました
今回は、爆発エフェクトを表示するようにしていきます

爆発エフェクトのプレハブ化

爆発エフェクトは、弾が敵に当たった時に生成する必要があるため、
作成した爆発エフェクトをプレハブ化して、
ゲーム中に生成できるようにしておきます

前回作成した「Explosion」オブジェクトを
「Prefabs」フォルダにドラッグしてプレハブ化します

シーンに存在する「Explosion」オブジェクトは不要になったので、
「Explosion」オブジェクトを選択した状態で Delete キーを押して削除します

これで、爆発エフェクトのプレハブ化が完了しました

爆発エフェクトを制御するスクリプトの作成

次は、爆発エフェクトの再生が完了したら、
爆発エフェクトを消すスクリプトを作成していきます

「Player」スクリプトを作成した時と同様の手順で、
「Explosion」スクリプトを作成します

そして、「Explosion」スクリプトをコードエディタで開き、
下記のコードを記述します

using UnityEngine;

// 爆発エフェクトを制御するコンポーネント
public class Explosion : MonoBehaviour
{
    // 爆発エフェクトが生成された時に呼び出される関数
    private void Start()
    {
        // 演出が完了したら削除する
        var particleSystem = GetComponent<ParticleSystem>();
        Destroy( gameObject, particleSystem.main.duration );
    }
}

コードを保存したら Unity エディタに戻り、
「Explosion」スクリプトを「Explosion」プレハブにドラッグして設定します

「Explosion」プレハブを選択し、「Explosion」スクリプトが表示されていれば
スクリプトが正常に反映できています

これで、爆発エフェクトのスクリプトの作成が完了しました

弾が敵に衝突したら爆発エフェクトを表示

最後に、弾が敵に当たった時に爆発エフェクトを表示するようにしていきます

「Enemy」スクリプトをコードエディタで開き、
変数の定義に下記のコードを追加します

public Explosion m_explosionPrefab; // 爆発エフェクトのプレハブ

そして、OnTriggerEnter2D 関数の下記の if 文の先頭に、
爆発エフェクトを生成するコードを追加します

...

// 弾と衝突した場合
if ( collision.name.Contains( "Shot" ) )
{
    // 弾が当たった場所に爆発エフェクトを生成する
    Instantiate( 
        m_explosionPrefab, 
        collision.transform.localPosition, 
        Quaternion.identity );
    
    ...

コードを保存したら Unity エディタに戻り、

「Enemy1」プレハブを選択した状態で
「Explosion」プレハブを「Explosion Prefab」の欄にドラッグして設定します

これで Unity を再生すると、弾が敵に衝突した時に、
爆発エフェクトが表示されるようになったことが確認できます

次回は、出現する敵の種類を追加していきます

次のチュートリアル

チュートリアル一覧