【Unity】メッシュコライダーを使わずにメッシュに合わせてコライダーを(自動)生成する方法(SAColliderBuilderアセット利用)

Unity

スポンサーリンク

複雑な形のゲームオブジェクトで当たり判定を行いたい場合、Mesh Colliderを使うことがあると思います。
でも、Mesh Colliderは重いのでなるべく使いたくない。

そんな時に、Mesh Colliderを使わずにMeshに合わせたColliderを生成できるとても便利なアセットがあったので紹介します。アニメーションにも連動してColliderは動きます。

それが、以下の「SAColliderBuilder」アセットを使います。

完成イメージ

※ロボットの周りに見える緑の枠がSAColliderBuilderで自動生成したColliderです。
 アニメーションにも連動します。

前提

今回は以下のアセット「Robot Hero : PBR HP Polyart」で試します。

SAColliderBuilderの使い方の詳細は、以下の画像の部分にある、Tutorial_jpを参照してください。

使い方(動画で解説)

使い方(ブログで解説)

1.SAColliderBuilderRobot Hero : PBR HP Polyartをアセットストアから入手し、Package Managerからインポート

2.HPCharacterをHierarchyに配置

2.SkinnedMeshRendererを自身または子にもつオブジェクトを選択(今回は親オブジェクトのHPCharacterを選択)

3.SABoneColliderBuilderコンポーネントを追加
 ※SABoneColliderBuilder:ボーン構造を持つ(アニメーションがある)メッシュに対して使用 ※今回はこっち
  SAMeshColliderBuilder:ボーン構造を持たない(アニメーションがない)メッシュに対して使用

4.ゲームオブジェクトの形に合うように設定値を任意に変えて(今回はShape TypeをCapsuleに、Fit TypeをInnerに変更)、SABoneColliderBuilderコンポーネントの右下のProcessボタンを押下

5.以下の画像のように、ボーン構造に沿って、各部品の子オブジェクト(画像の黄色の枠のような感じ)にいい感じにColliderが生成される。(シーンのロボットに表示されている緑の枠)
 ※今回はSABoneColliderBuilderのShape TypeをCapsuleにしているので、"Capsule Collider"で生成されている。

完成

これで自分で処理の重いMesh Colliderを使わずに、Colliderを作れる。(Mesh Colliderほどのピッタリ感はありませんが、大体のゲームはこれで十分でしょう)

Unity

Posted by ton