(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


一瞬であらゆるゲームオブジェクト(メッシュ)を爆発させるExploder【Unity】【アセット】


このエントリーをはてなブックマークに追加


この記事はUnityアセット真夏のアドベントカレンダー 2019の8日目の記事です。


この記事でのバージョン
Unity 2018.4.4f1
Exploder 1.7.10


はじめに

今回は一瞬であらゆるゲームオブジェクト(メッシュ)を爆発させるExploderというアセットの紹介です!

Exploder - Asset Store


イメージとしては以下のような感じ。

f:id:kan_kikuchi:20190804085922g:plain


ちなみに、同じ開発元が2Dバージョンも出してるようです(未確認)。

Exploder 2D - Asset Store


なお、記事中の画像は以下のアセットを使っております。

Naoko | 3D Humanoids | Unity Asset Store



基本的な使い方

まずはExploderの使い方ですが、ExploderというPrefabをシーン上に設置した後、

f:id:kan_kikuchi:20190804082917j:plain


爆発したいGameObjectを指定し、ExploderSingleton.Instance.ExplodeObjectを実行するだけです。

using Exploder.Utils; //Exploderを使うのに必要
//gameObject(Cube)を爆発!
ExploderSingleton.Instance.ExplodeObject(gameObject);
f:id:kan_kikuchi:20190804083821g:plain


もちろん、この対象のGameObjectにはRendererが付いてる必要がありますが、

RendererはMesh RendererでもSkinned Mesh Rendererでも大丈夫です。


同時に全て爆発

爆発したいものを子にまとめて、

f:id:kan_kikuchi:20190804084001j:plain


その親を爆発対象にすると、親と同時に子も全て爆発する事もできます。

//Parent(と同時に子にあるCubeとCapsuleとSphere)を爆発!
ExploderSingleton.Instance.ExplodeObject(Parent);
f:id:kan_kikuchi:20190804084021g:plain



一部分だけ爆発

人のモデルなど、メッシュが別れてる場合は、

f:id:kan_kikuchi:20190804084547j:plain


一部だけ爆発する事も可能です。

//Naoko_Maid(メイド服)だけを爆発!
ExploderSingleton.Instance.ExplodeObject(Naoko_Maid);
f:id:kan_kikuchi:20190804085922g:plain



爆発の設定と、設定を複数作る方法

爆発の速度や分割数などの設定は最初に設置した、ExploderのInspectorから変更する事が出来ます。

f:id:kan_kikuchi:20190804090105j:plain


ただ、ExploderSingleton.Instanceを使うと、設定が一つしか使えません。


なので、爆発させる対象ごとに設定を変更したい場合は、Exploderは複数作り、

任意のExploder(に付いてるExploderObject)を指定してExplodeObjectを実行しましょう。

//爆発を実行するクラス(Inspectorで設定)
[SerializeField]
private ExploderObject _exploderObject = null;
//Inspectorで設定したExploderObjectを使って爆発
_exploderObject.ExplodeObject(gameObject);
f:id:kan_kikuchi:20190804090332j:plain



初回爆発時の処理落ち対策

以前にリリースした札束風呂VRでも、このExploderを使って色々なものを爆破させていたのですが、

最初の爆発時のみ処理落ちが発生していました。



2回目以降は処理落ちしないので、おそらく画像かメッシュのキャッシュ周りが原因と推測し、

初回フェードアウト中のカメラの前で爆発を発生させキャッシュさせる事で対策しました。

(フェードアウト中なので、ユーザには見えない)

f:id:kan_kikuchi:20190804091655g:plain


正攻法ではない感じがするので、一応参考までに。