【Unity】衝突時にパーティクルを出すスクリプトを解説!!

Unity
この記事は約6分で読めます。

Unityのパーティクルの勉強がてら、つくったスクリプトを解説します。

今回つくったスクリプトは、ゲームオブジェクトの衝突時に設定したパーティクルを再生することができます。

アクションゲーム等で利用できるかと思います。

つくったのはこちら。

 

なお本記事では、パーティクルを出すスクリプトに注力して解説します。

解説のために使用したパーティクルは、Unity公式の「Particle Pack」アセットです。無料かつ商用利用可能のため、学習からコンテンツ制作まであらゆる用途で利用できます。

(自分でパーティクルをつくろうとしたのですが、公式アセットほどのクオリティは出せそうになかったので、今回はこちらを使用します。)

 

 

スポンサーリンク

Particle Packアセットをインポート

まず初めにUnityで新規プロジェクトを立ち上げ、AssetStoreにてParticle Packアセットをインポートしましょう。

 

インポートが完了すると、Project内に「ParticlePack」フォルダが作成されます。

このフォルダ内の[ParticlePack]>[Scenes]>[Main]を実行すると、Particle Packに含まれる全パーティクルを見ることができます。

WASDで移動、Spaceで各パーティクルの説明が確認できるので、まずはいろいろ眺めてみるといいかも。

 

 

スポンサーリンク

オブジェクト衝突時にパーティクルを表示する方法

必要なもののダウンロードは終わったので、さっそくつくっていきましょう!

1. 衝突用ゲームオブジェクトの準備

シーン内に衝突用ゲームオブジェクトを準備します。

今回用意するのは以下2つのゲームオブジェクトです。

■Cube

追加するComponent

・Rigidbody(追加するだけ)

 

■Plane

Tag:「Object」タグを新規作成し設定(当たり判定に使います)

・Rigidbody(Use Gravityのチェックを外す、Is Kinematicにチェックを入れる)

 

これを以下のように設置します。シーンをプレイするとCubeが重力で落ちてきてPlaneに衝突します。

衝突用ゲームオブジェクトの用意はこれで完了です。次に使用するパーティクルの設定を行いましょう。

 

2. 表示したいパーティクルの設定

Particle Packアセット内のパーティクルを用意しましょう。

今回は、[ParticlePack]>[EffectExamples]>[Fire&ExplosionEffects]>[Prefabs]>BigExplosionを使用します。

 

このBigExplosionプレファブを一度Hierarckyへドラッグ&ドロップします。

HierarckyへドロップしたBigExplosionのInspectorを開き、Particle Systemコンポーネント「Looping」のチェックを外します

 

このLoopingのチェックを外す作業をHierarckyにあるBigExplosionの階層全てに行ってください。

Loopingのチェックを外すことで、パーティクルが連続で再生されなくなり、ゲームオブジェクトが衝突したときだけパーティクルが出るようにします

 

全てのLoopingのチェックを外し終えたら、BigExplosionゲームオブジェクトProject内へドラッグ&ドロップして再度プレファブ化します。

今回はProject>Assetにドロップし、Original Prefabとしてプレファブ化できました。

※Hierarcky内のBigExplosionゲームオブジェクトはもう使わないので削除

ここまでで前準備は終わりです。あとはスクリプトを編集してアタッチしていきます。

 

3. 衝突時にパーティクルを生成するスクリプト

衝突時にパーティクルを出すために必要なスクリプトを作成していきます。

今回は2つのスクリプトを用意しました。ParticleScriptの方だけでも一応機能はしますが、パーティクルのゲームオブジェクトがシーン上に残ってしまいます。残ったゲームオブジェクトを消すためにSeldDestroyスクリプトを使用します。

 

ParticleScript:衝突時にパーティクル用のゲームオブジェクトを生成するスクリプト(Cubeへアタッチ)

SelfDestroy:用済みのパーティクルを削除するスクリプト(Project内のBigExplosionへアタッチ)

 

ParticleScriptのコード

 

ParticleScriptCubeゲームオブジェクトへアタッチし、InspectorでparticleObjectに再プレファブ化したBigExplosionを割り当てます。

 

SelfDestroyのコード

 

SelfDestroyをProject内の再プレファブ化したBigExplosionへアタッチするだけでOKです。パーティクルが終了したら自滅します

 

以上で作業はおわりになります。さっそく動かしてみましょう。

4. 動かしてみる

実際に動かしてみると、衝突時にパーティクルが生成され、ぶつかったゲームオブジェクトが削除されました!

 

今回解説したスクリプトを応用すれば、ゲームのクオリティアップが簡単にできるかと思います。特にアクションゲームで使えるかな。。。

ParticlePackにはこの他にも数十種類のパーティクルが入っているので、パーティクルをいろいろ試してみることをおすすめします。

 

もっとパーティクルについて知りたい方はこちらをどうぞ!

Unity ゲームエフェクト マスターガイド

Unity ゲームエフェクト マスターガイド

秋山 高廣
4,620円(03/19 15:06時点)
Amazonの情報を掲載しています

 

最後まで読んでいただきありがとうございました。

 

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