衝突して爆発

2022.12頃にStandard AssetsがAsset Storeから消えた模様

今回の内容はレポートフォルダのゲームプログラミングフォルダに

GP14.zip

として作業済みのUnityプロジェクトを置いておいた。

爆発

公式マニュアル 簡易な爆発の作成

パーティクル用のマテリアル素材をAsset StoreからDLする。
個人アカウントでサインインしてStandard Assetsをプロジェクトにインポートする。

Standard Assets に含まれるサンプルシーンや3Dモデルやアニメーションは除外した。
必要が有ればインポートに含めておく。
以下の画像では ParticleSystems と PhysicsMaterials(物理マテリアル。反発や摩擦の設定。Colliderコンポーネントに設定できる。)を含めた。

パーティクルの発生源となるGameObjectを用意しておく。

Cylinderなどを適当にシーンに追加してコンポーネントにParticle Systemを追加する。


以下は、公式の解説に従ってParticleを設定している様子。

公式資料の記事の設定後に必要な追加作業:

Materialのテクスチャ画像が1x4の比率で4枚の画像を縦に並べたアニメーション(スプライト)用のものになっているので、一番上の1枚だけを切り出した。

更にアニメーションスプライトの設定をすればパーティクルがアニメーションするようになる。(ここでは省略)

参照: スプライトエディター(公式)

https://light11.hatenadiary.com/entry/2018/12/06/224926

 https://cyross.sakura.ne.jp/unity_blog/?p=88

着弾後、一瞬の間をおいてパーティクルが放出されるようにコードを書いてParticle SystemをアタッチしたGameObject(以下の画像ではシリンダー)にアタッチする。

これまではコルーチンの開始コードと遅延実行用のメソッドを記述していたが、今回はUnityの独自機能Invokeを使う。
爆発したオブジェクトは Destroyメソッドでシーンから削除するが、これもDestroyの遅延実行時間を指定してパーティクルの放出が終了してから削除するようにしてある。

参照:遅延実行にはInvokeを使おう https://www.sejuku.net/blog/83762

上記のスクリプトは、なんらかのGameObjectとの衝突を検知して着火するようになっている。

動作確認のため、スクリプトをアタッチしたCylinderの上方に火種となるSphereを配置してRigidBodyを設定しておく。

シーンを再生して、衝突後に火花が散りCylinderが消えることを確認する。