シェアする

[Unity] 簡単に爆発&消滅するオブジェクトを作る|動画あり

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

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

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

はじめに

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

Assets > Import Package > ParticleSystemを開いて、表示されたウィンドウからImportしましょう。表示されるファイルをすべてImportしてしまって良いと思います。

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

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

では詳しい方法を説明していきます。

発火を実装する

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

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

FireComplex

スクリーンショット 2015-12-25 13.32.15

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

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

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

FireMobile

スクリーンショット 2015-12-25 13.35.29

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

FireWorks

スクリーンショット 2015-12-25 13.36.55

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

Flare

スクリーンショット 2015-12-25 13.38.01

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

FlareMobile

スクリーンショット 2015-12-25 13.38.48

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

WildFire

スクリーンショット 2015-12-25 13.41.50

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

※この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を設置してあります。

スクリーンショット 2015-12-25 13.50.57

赤い部分に爆発を起こします。では実際の動作を確認してみてください。

スクリーンショット 2015-12-25 13.53.59

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

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

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

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

スクリーンショット 2015-12-25 14.01.47

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

スクリーンショット 2015-12-25 14.02.06

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

スクリーンショット 2015-12-25 14.02.14

その後余韻を持った後、

スクリーンショット 2015-12-25 14.02.32

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

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

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

さらに、この「Explosion」は爆発して消えたように見えても、実際はシーン内に残っています。再ロードすれば消えますが、爆発後もそのままゲームを続ける場合は注意してください。

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

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

まとめ

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

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

Unityで銃弾を撃つスクリプト(動画あり) |アクションゲーム
アクションゲームで「銃で敵を倒しながら進む」というようなゲームの場合、銃弾が飛んでいかなければ話になりませんよね。 そこで今回は、アクショ...

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

ではまた。