原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】破壊系ツール「RayFire」を使ってみよう

急に

11月に入り朝夕の冷え込みが厳しくなってこのまま寒い冬へ突入していくのかなぁと思っていたら、季節が戻ったかのような急な温かさで戸惑っている皆さんこんにちは。私の人生もそうあって欲しいものです。

 

独身の日セール

さて、11月11日は中国では「独身の日」だそうで、それに併せてUnityのアセットストアでは中国だけなく日本を含むアジア圏で大幅なセールが行われていました。

数多くのアセットが50%オフ、70%オフで出品されておりセールというよりは投げ売りに近い状態、中国さん有難う、日本人は中国の歴史も文化も料理も大好きです、ただ、共産党が嫌いなだけです。

 

というわけで、前から欲しかったけど高額で手が出なかったアセットを幾つか購入したのですが、今回はその中でも最も高価だった「RayFire」のご紹介

 

RayFireとは

元々、3DCGの分野では破壊系ツールとして比較的有名だったようで、映画、映像の分野で頻繁に使用されており、実際に「RayFire」をキーに検索してみると3dsMaxでの使い方を紹介するページが数多く検索されます。そしてそのUnity版が「RayFire for Unity」となります。

 

assetstore.unity.com

オブジェクトの破壊や粉砕、崩壊などのシミュレーションを簡単に行うことができるツールで、わざわざメッシュ分割したモデルを用意しなくてもこのツールを使えば破壊によるメッシュ分割から物理演算による破片の飛散まで実装することができます。

まぁ、お値段はそれなり($170.0)にするのですが、今回はそれが70%オフ=6,000円ぐらいで購入できるということで、本当に中国さん有難う、日本人は中国の歴史も文化も料理も大好きです、ただ、共産党が・・・

 

使ってみよう

ゲーム内のオブジェクトを破壊するには、RayFireを使って事前にオブジェクトを破壊(メッシュ分割した)したオブジェクトを作成しておくパターンと、ゲーム実行中にRayFireを使ってリアルタイムに破壊するパターンがあります。

どちらもそれを行うには当然ながらそれなりの設定が必要なのですが、今回は事前に破壊(メッシュ分割)したオブジェクトを作成するパターンを紹介します。

 

1.オブジェクトを用意する

今回は壁っぽいCUBEのオブジェクトを使用します。

f:id:Karvan:20201117203647p:plain

 

このオブジェクトにRayfire Shatterコンポーネントをアタッチ

f:id:Karvan:20201117203804p:plain

「Fragment」ボタンを押すとこのオブジェクトを元にメッシュ分割したオブジェクトが新しく生成されます

 

f:id:Karvan:20201117203924p:plain

 こんな感じに分割されたオブジェクトが作成されます。

このメッシュ分割されるパターンは先程のInspector内のFragments Typeから選択でき、

f:id:Karvan:20201117204104p:plain

こんな感じや

f:id:Karvan:20201117204134p:plain

こんな感じにも分割できます。(他にもパターンがあります)

 

2.Rigidコンポーネントをアタッチ

メッシュ分割したオブジェクトが作成出来たら、そのオブジェクトにRayFire Rigidコンポーネントをアタッチし、ObjectTypeに「Mesh Root」を指定します。

f:id:Karvan:20201117204306p:plain

これにより子オブジェクトとして配置されている分割オブジェクトに物理演算が適用され、RayFireコンポーネントがアタッチされたオブジェクト同士の接触判定が行われるようになります。
 

通常、Unityでこのような動作を行う場合、分割オブジェクトそれぞれにColiderとRigidbodyのアタッチと設定を行う必要がありますが、RayFireでは親オブジェクトにRayFire Rigidコンポーネントをアタッチするのみで、子オブジェクトにColiderとRigidbodyをアタッチする必要はありません

 

3.初期化モードを決める

次に初期化モード(Initialization)を決めます。

これはRayFire Rigidの動作をゲーム開始直後から適用させるのか(At Start)、Script側からメソッドをコールすることで適用開始とするのか(By Method)、のモードで例えばゲーム内のイベントを発火点にオブジェクトの破壊を有効にしたい場合は動作開始モードに「By Method」を指定します。

 

4.シミュレーションタイプを決める

最後にSimulation Typeの設定でRayFire Rigidの動作が適用となった後、実際に物理演算を働かせる着火点を決めます

直ぐにでも物理演算を有効にするには「Dynamic」を、弾丸等の他のオブジェクトとの接触後に有効にする場合は「Sleeping」を指定します。(他にもいくつか設定があります)

 

 ここまでの設定を行うと準備完了です。実際に動作させるとこんな感じになります。

(初期化モードには「At Start」を指定)

 

・シミュレーションタイプがDynamicの場合

 f:id:Karvan:20201117205022g:plain

ゲーム開始と同時に自重によって壁が崩れ落ちます。

 

・シミュレーションタイプがSleepingの場合

f:id:Karvan:20201117205149g:plain

落下物との衝突で壁が崩れるようになります。

 

どちらもかなりリアルな破壊挙動になっていると思います。

RayFireではこれ以外にも爆風による破壊シミュレーション等色々な処理を行うことが出来るみたいなので、また詳しい事が分かったらこのブログで取り上げたいと思います。

 

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。