Unity

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

投稿日:

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円(10/18 21:43時点)
発売日: 2019/07/19
Amazonの情報を掲載しています

 

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

 

スポンサーリンク

 

当サイト(your-3d.com)の管理人のゆあーさんと申します。

このサイトでは、私がZBrushやunityなどで調べたことをわかりやすく共有出来たらいいなと思い開設しました。

読んでくださった皆様のお役に立てたら幸いです。

 

Twitter:

@yoursun3d

 

Booth(3Dモデル販売してます!):

https://your-3d.booth.pm/

 

Amazonほしいものリスト:

https://www.amazon.jp/hz/wishlist/ls/YIXXWB7FVXHG?ref_=wl_share