DestroyIt の使い方


191.8 MB 746Files
3Dモデルを手軽に破壊(表現)することができるアセットです。

 

基本的な使い方

  1. Destructibleスクリプトを壊したい対象にアタッチ、各種項目を設定すれば破壊可能になる。
  2. しかし、それだけではダメージを与えられない。

ダメージを与える方法

デモシーンの破壊アクション、鉄砲やミサイルなどでは破壊対象にダメージを与えることができた。しかしいざ自分で用意したモデルにDestructibleスクリプトをアタッチして、自前の破壊アクション(車で衝突する)をやってみてもダメージを与えることができなかった

解決方法 結論

” Rigidbody Projectile スクリプトをアタッチする ”

今回は車が建物に衝突した時に、建物が壊れる、という動きを作りたかったので、車(ダメージを与えたいモノ)に Rigidbody Projectile というスクリプトをアタッチすると 建物(ダメージを与えられるモノ)にダメージを与えることができた。

余談 ダメージ量
質量1000kgの車で20km/hで壁に激突すると、DestructibleスクリプトのHit Pointを約5000減らすことに成功した。20km/hは5.5m/sなので、質量kg×速度m/sでの衝撃がHit Pointに与えられるようだ。

解説(備忘)
Rigidbody Projectileスクリプト内には衝突した時にDestructibleスクリプトの有無を検出して、スクリプトがある場合は衝突速度に応じたダメージを動的に取得したDestructibleスクリプトのHit Pointへ衝突時のダメージを与える(Hit Pointを減らす)処理が記述されていた。

感想
公式のマニュアルにもダメージを与える方法が記載されていなかったので、車で壁を壊す方法が分からず苦労しました。うーん、何故にマニュアルに記載がされていないのか?

 



 

Progressive Damage の使い方 (StandardShader)

Progressive Damage = モデルを段階的にひび割れのような表示を行い、ダメージが蓄積すると壊れる破壊表現。

  1. 破壊させたいモデルを用意
  2. モデルのマテリアル(複数ある場合はすべてのマテリアルに以下の作業を行う)、StandardShaderの SecondaryMaps の NormalMapsに 蓄積ダメージのノーマルマップを入れる。(ProgDmgで検索すればDestroyItアセットが用意してくれている蓄積ダメージのノーマルマップの例が検索できる。)
  3. Detail Maskに DetailMask1_D0 を入れる
  4. コライダーをつける(もしくは子ゲームオブジェクトにコライダーを持たせる)
  5. Destructibleスクリプトをアタッチ
  6. Damage Levelsでダメージの%に応じた破壊具合の表現をどれぐらいにするかを設定できる。(今回設定したときはなぜかプルダウンのVisibleDamageが選択できなかった。)
  7. ダメージを与えてみて段階的に壊れていくかを確認。

 

 

 

 

コメント

タイトルとURLをコピーしました