この記事はUnityアセット真夏のアドベントカレンダー 2019の8日目の記事です。
この記事でのバージョン
Unity 2018.4.4f1
Exploder 1.7.10
はじめに
今回は一瞬であらゆるゲームオブジェクト(メッシュ)を爆発させるExploderというアセットの紹介です!
Exploder - Asset Store |
イメージとしては以下のような感じ。
ちなみに、同じ開発元が2Dバージョンも出してるようです(未確認)。
Exploder 2D - Asset Store |
なお、記事中の画像は以下のアセットを使っております。
Naoko | 3D Humanoids | Unity Asset Store |
基本的な使い方
まずはExploderの使い方ですが、ExploderというPrefabをシーン上に設置した後、
爆発したいGameObjectを指定し、ExploderSingleton.Instance.ExplodeObjectを実行するだけです。
using Exploder.Utils; //Exploderを使うのに必要
//gameObject(Cube)を爆発!
ExploderSingleton.Instance.ExplodeObject(gameObject);
もちろん、この対象のGameObjectにはRendererが付いてる必要がありますが、
RendererはMesh RendererでもSkinned Mesh Rendererでも大丈夫です。
同時に全て爆発
爆発したいものを子にまとめて、
その親を爆発対象にすると、親と同時に子も全て爆発する事もできます。
//Parent(と同時に子にあるCubeとCapsuleとSphere)を爆発!
ExploderSingleton.Instance.ExplodeObject(Parent);
一部分だけ爆発
人のモデルなど、メッシュが別れてる場合は、
一部だけ爆発する事も可能です。
//Naoko_Maid(メイド服)だけを爆発!
ExploderSingleton.Instance.ExplodeObject(Naoko_Maid);
爆発の設定と、設定を複数作る方法
爆発の速度や分割数などの設定は最初に設置した、ExploderのInspectorから変更する事が出来ます。
ただ、ExploderSingleton.Instanceを使うと、設定が一つしか使えません。
なので、爆発させる対象ごとに設定を変更したい場合は、Exploderは複数作り、
任意のExploder(に付いてるExploderObject)を指定してExplodeObjectを実行しましょう。
//爆発を実行するクラス(Inspectorで設定) [SerializeField] private ExploderObject _exploderObject = null;
//Inspectorで設定したExploderObjectを使って爆発
_exploderObject.ExplodeObject(gameObject);
初回爆発時の処理落ち対策
以前にリリースした札束風呂VRでも、このExploderを使って色々なものを爆破させていたのですが、
最初の爆発時のみ処理落ちが発生していました。
2回目以降は処理落ちしないので、おそらく画像かメッシュのキャッシュ周りが原因と推測し、
初回フェードアウト中のカメラの前で爆発を発生させキャッシュさせる事で対策しました。
(フェードアウト中なので、ユーザには見えない)
正攻法ではない感じがするので、一応参考までに。