こんにちはクリアメモリです!

アクションゲームを作っている時に、爆発するオブジェクトを作る事がよくあります。

 

Unityではリアルな爆発を簡単に実装する事ができるので、一度やってみてください。

今回の方法は「Particle System」を使います。

はじめに

 

まず「Particle System」をインポートします。

Assets > Import Package > ParticleSystemを開いて、表示されたウィンドウからImportしましょう。

 

表示されるファイルをすべてImportしてしまってOK。

ImportするとAssets内にStandard Assetsというフォルダが追加されています。

 

Standard Assets > ParticleSystem > Prefabsというフォルダに「爆発」や「発火」のプレハブがあるので、これを任意のタイミングで生成するという流れになっています。

では詳しい方法を見ていきましょう。

 

発火を実装する

 

まず先ほど導入したパーティクルシステムにある「火」をゲーム内に追加しましょう。

以下のような炎が現れると思います。

 

FireComplex

 

Unity FireComplex

 

こちらは「FireComplex」というプレハブをシーン内に設置しただけです。

もともと完成しているプレハブなので、できれば設定を変えないほうが良いです。

 

「火」のプレハブと一言で言いましたが、同じ「火」だけでも幾つか種類がありますので、紹介していきます。

 

FireMobile

 

Unity FireMobile

 

先ほどの「FireComplex」に似ていますが、少し小さな火になっています。

 

FireWorks

 

Unity FireWorks

 

名前の通り「花火」を出現させます。

 

Flare

 

Unity Flare

 

線香花火のような動作をします。

 

FlareMobile

 

Unity FlareMobile

 

「Flare」の小さいバージョンです。

 

WildFire

 

Unity WildFire

 

動いた軌道を火が追いかけるようになります。

 

このParticleはオブジェクトを動かさないと火がつかないので注意してください。

この他にも「」や「」のオブジェクトなどがあります。

 

続いて「爆発」させる方法の説明に入ります。

 

爆発するオブジェクトを生成する

 

Explosion」というプレハブを追加すれば、爆発するオブジェクトを作れるのですが、それだけだと「ゲーム実行時に爆発」してしまいます。

そこで任意のタイミングで爆発させるために、コードを書いてみましょう。

 

以下のようなコードを作成してください。

 

using UnityEngine;
using System.Collections;

public class Expload : MonoBehaviour {
    public GameObject ExploadObj;
    public GameObject ExploadPos;
    // Update is called once per frame
    void Update () {
        //スペースキーを押したら
        if (Input.GetButtonDown ("Jump")) {
            Instantiate (ExploadObj, ExploadPos.transform.position, Quaternion.identity);
        }
    }
}

 

ExploadObjに生成したいプレハブ(爆発のプレハブ)を割り当てましょう。

ExploadPosはプレハブを生成する座標を指定しています。

 

今回は以下の画像のようにGameObjectを設置してあります。

 

UnityのGameObject

 

赤い部分に爆発を起こします。

では実際の動作を確認してみてください。

 

Unity 爆発するエフェクト

スクリーンショットを撮ったらこのようになりました。

さらに、先ほど紹介した「発火」と今の「爆発」を組み合わせると以下のようなものになります。

 

発火と爆発を組み合わせる

 

ここで使っているのは「WildFire」と「Explosion」です。

 

Unity 炎のエフェクト

 

HPが0になったら「火」を出しながら墜落し、

Unity 燃えるオブジェクト

 

一定時間後に爆発します。

 

Unity オブジェクトが爆発

 

その後余韻を持った後、

 

Unity 燃えるエフェクト

 

火が消えてからシーンを再読み込みしています。

先ほどのコードと同じようにすれば実装できるのですが、ExploadPosは「プレイヤーの座標」に変更してください。

 

また、爆発するオブジェクトを生成しているだけなので「爆発と同時に、プレイヤーの画像とコライダーを非表示」にしています。

さらに、この「Explosion」は爆発して消えたように見えても、実際はシーン内に残っています。

 

再ロードすれば消えますが、爆発後もそのままゲームを続ける場合は注意してください。

その場合はDestroy(GameObject)で削除しておくと、ゲームが重くなる心配も無くなります。

 

今回の動作がわかりやすくなるように、動画を撮影しました。

 

 

まとめ

 

今回の方法は「爆発する位置」を指定するだけでなく、プレハブを生成するときにも使えるコードなので是非覚えてください。

こちらの記事でも「Instantiate」を使っています。

 

もしよければ立ち寄ってみてください。

ではまた。

関連記事
おすすめの記事