急に
11月に入り朝夕の冷え込みが厳しくなってこのまま寒い冬へ突入していくのかなぁと思っていたら、季節が戻ったかのような急な温かさで戸惑っている皆さんこんにちは。私の人生もそうあって欲しいものです。
独身の日セール
さて、11月11日は中国では「独身の日」だそうで、それに併せてUnityのアセットストアでは中国だけなく日本を含むアジア圏で大幅なセールが行われていました。
数多くのアセットが50%オフ、70%オフで出品されておりセールというよりは投げ売りに近い状態、中国さん有難う、日本人は中国の歴史も文化も料理も大好きです、ただ、共産党が嫌いなだけです。
というわけで、前から欲しかったけど高額で手が出なかったアセットを幾つか購入したのですが、今回はその中でも最も高価だった「RayFire」のご紹介
RayFireとは
元々、3DCGの分野では破壊系ツールとして比較的有名だったようで、映画、映像の分野で頻繁に使用されており、実際に「RayFire」をキーに検索してみると3dsMaxでの使い方を紹介するページが数多く検索されます。そしてそのUnity版が「RayFire for Unity」となります。
オブジェクトの破壊や粉砕、崩壊などのシミュレーションを簡単に行うことができるツールで、わざわざメッシュ分割したモデルを用意しなくてもこのツールを使えば破壊によるメッシュ分割から物理演算による破片の飛散まで実装することができます。
まぁ、お値段はそれなり($170.0)にするのですが、今回はそれが70%オフ=6,000円ぐらいで購入できるということで、本当に中国さん有難う、日本人は中国の歴史も文化も料理も大好きです、ただ、共産党が・・・
使ってみよう
ゲーム内のオブジェクトを破壊するには、RayFireを使って事前にオブジェクトを破壊(メッシュ分割した)したオブジェクトを作成しておくパターンと、ゲーム実行中にRayFireを使ってリアルタイムに破壊するパターンがあります。
どちらもそれを行うには当然ながらそれなりの設定が必要なのですが、今回は事前に破壊(メッシュ分割)したオブジェクトを作成するパターンを紹介します。
1.オブジェクトを用意する
今回は壁っぽいCUBEのオブジェクトを使用します。
このオブジェクトにRayfire Shatterコンポーネントをアタッチ、
「Fragment」ボタンを押すとこのオブジェクトを元にメッシュ分割したオブジェクトが新しく生成されます。
こんな感じに分割されたオブジェクトが作成されます。
このメッシュ分割されるパターンは先程のInspector内のFragments Typeから選択でき、
こんな感じや
こんな感じにも分割できます。(他にもパターンがあります)
2.Rigidコンポーネントをアタッチ
メッシュ分割したオブジェクトが作成出来たら、そのオブジェクトにRayFire Rigidコンポーネントをアタッチし、ObjectTypeに「Mesh Root」を指定します。
これにより子オブジェクトとして配置されている分割オブジェクトに物理演算が適用され、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の場合
ゲーム開始と同時に自重によって壁が崩れ落ちます。
・シミュレーションタイプがSleepingの場合
落下物との衝突で壁が崩れるようになります。
どちらもかなりリアルな破壊挙動になっていると思います。
RayFireではこれ以外にも爆風による破壊シミュレーション等色々な処理を行うことが出来るみたいなので、また詳しい事が分かったらこのブログで取り上げたいと思います。