【Unity】Mesh ColliderのConvexオプションについて

fbxをインポートすると、メッシュ情報からMesh Colliderが作られますよね。
そのMesh Collider同士の衝突判定について、めっちゃハマったお話です。

メッシュ同士の衝突について

Unityマニュアルに、以下のように記載されています。

docs.unity3d.com

上の記事には、Convex がオンとなっているメッシュコライダーは、他のメッシュコライダーと衝突することができます。と書かれてあります。
さっそく、試してみることにしました。

衝突したい両方のConvexをオンにしてみた

これが、思った通りに衝突判定してくれない。
正確に言えば、衝突していないのに起動時に衝突検知し、そのあとは衝突させても検知してくれない。
これで、かなり悩みました。

Convexをオンにすると、メッシュ通りのコライダにならない

ということが判明!!!
下のキャプチャを見てみてください。
VRイライラ棒を作っていますw

f:id:s44511173:20190904162547p:plain

こちらがConvexオフ。

f:id:s44511173:20190904162552p:plain

こちらがConvexオン。緑のラインがコライダの形を表しています。
なんと、メッシュの外枠を囲った形になっているではありませんか!!

これのせいで、突き刺さっている棒のコライダが起動時に衝突検知してしまい、そのあとは衝突中判定になっていたのですね。ナンテコッタイ。
コライダの形を簡易化しているってことなのかな。

コライダの形を変えたくない場合はConvexをオフにする

ではどうすれば良いかというと、コライダの形をメッシュ通りにしたいオブジェクトについては、Convexをオフすれば良いようです。
今回は衝突したときに、イライラ棒に電流を流したい(バイブレーションさせる)ので、イライラ棒だけConvexをONにしました。
コライダの形も、まあなんとか。

f:id:s44511173:20190904163334p:plain

前後の四角いコライダは、イライラ棒すっぽ抜け検知用です。

コライダの形を変えたくないけどMesh Collider同士を衝突させたい

そんな無茶な要望に応えてくれるアセットもあるようです。しかも無料!!

kan-kikuchi.hatenablog.com

こちらのサイト様で紹介されていました。
もっと早く気づけばよかった・・・!!
Mesh Colliderを作るのではなく、他のColliderを組み合わせてメッシュと同じ形状を再現してくれるそうです。スバラシイ!!

結論

  1. メッシュに合わせてコライダを作ってくれる。それがMesh Collider。
  2. Mesh Collider同士の衝突判定では、Convexをオンにしよう。
  3. Convexをオンにすると、メッシュ通りのコライダにならないので注意。
  4. アセットもあるよ!

 

 

↑↑↑ ぜひ遊んでみてください!↑↑↑