Unityのアセットで破壊系と言えば「RayFire forUnity」はかなり有名です。
実際にデモなどを見てみると買いたいと思いましたね。ただお値段がなかなかなので、セール時に買ったのですが・・・。
さて実際に使ってみると、かなり苦戦しました。
特に剣で斬る(切る)処理の部分。
こういうヤツ!ルパン三世の石川五右衛門が斬鉄剣で斬って、ズルってなるヤツ!
それを求めていたんですけど、いろいろやってもうまくいかない・・・いくつかのサイトを参考にしても、全然だめでイライラがMAXになるほどに。
今回はようやく引っかかっていた部分がクリアになったので、今回ご紹介します。
環境
以下の環境で確認しています。
- Unityのバージョン:2019.4.11f1
- RayFire for Unity のバージョン:1.33
注意すべきポイント
破壊されるものと破壊するものそれぞれの設定が関係するのでややこしいんです。
- 破壊するもの(剣や刀)
- 破壊対象(今回はCubeなどの基本3Dオブジェクト)
うまくいかないと切れずに破壊されたり、吹っ飛んで行ったり・・・大変なままでした。
それぞれの注意点をそれぞれに書いていきます。
破壊するもの(剣や刀)の設定
破壊するもの(剣や刀)の刃に値するものに「RayFireBlade」を追加します。
あと念のためにMesh FilterはQuadにしておいた方が良さげ。
サンプルから持ってくるのもありです。
ポイントは以下の通り。
Action Typeは「Slice」一択
On Triggerは衝突判定と同じです。入った時(Enter)、出た時(Exit)、入って出た時(Enter Exit)の3つ。自分の狙っているものでOKです。
Forceは斬った後の吹っ飛びにも影響があります。
日本刀のように斬ってズルッといくヤツは0にしておくといい感じ。
50とかだと端までドーンとすっ飛んでいくので面喰います。(気づかずに手間取った)
破壊対象
破壊対象には、基本的には「RayFire Rigid」をつけるのですが、ここも注意点があります。
3DオブジェクトのデフォルトであるColliderが邪魔なんです。なので消してください。(これでずっと苦しんだ)
イメージとしてはこんな感じ
で、肝心のRayFire Rigidはこんな感じで設定しました
Initializationを「At Start」。メソッドで制御したければ、そちらで。今回は斬ったら・・・なので、こちら。
Simulationは「Dynamic」が基本で良さげ。これも試す価値はありかも。
Demolitationは「Runtime」や「Awake Precache」で動作は確認しました。他もいじってみると変わるかも。
Physicsの中では
Material Typeをサンプルに合わせて「Glass」にしておくのが無難。
あとLimitationsの「Slice By Blade」にチェックを入れる
これらがピンと来なかったので注意です。
これでひとまず刃の部分が触れて設定に合わせて、対象物が切れるはずです。
イメージとしてOculus Questで作ってみた動画を作りました。
ちなみに2つ切ってますが、刃それぞれに設定を変えているのでわかりやすいかも。
具体的にはForceの値で、最初が50で後が0になっています。すごくわかりやすいのでご参考までに。
最後に
いかがだったでしょうか?
まだまだ検証は足りませんが、サンプルすらよくわからずに混乱した身とすれば、斬って斬られたものがちゃんと動いた時は感動しました。スラッシュ処理はまだ試せると思いますが、とりあえずは斬れるようにするというところまではこの記事でできるはずです。
自分と同じように苦しんでいる方のヒントになれば幸いです。
コメント