| この記事の要点 |
|
エラー内容
Unity のコンソールに次のエラーが表示され、対象オブジェクトの衝突判定が正しく動作しません。
Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported in Unity 5.
If you want to use a non-convex mesh either make the Rigidbody kinematic or remove the Rigidbody component. Scene hierarchy path "MyAircraft", Mesh asset path "~"
メッセージの意味は「凸でない MeshCollider と、キネマティックでない Rigidbody の組み合わせは Unity 5 からサポートされなくなった。凹形状のメッシュを使いたいなら Rigidbody をキネマティックにするか、Rigidbody コンポーネントを削除せよ」です。Scene hierarchy path にエラーの出ているオブジェクト名(この例では MyAircraft)、Mesh asset path に使われているメッシュのファイルが表示されるので、まずそこを確認します。
原因
同じ GameObject(または子オブジェクト)に次の 2 つが同時に付いていることが原因です。
- MeshCollider で Convex のチェックが外れている(=モデルのポリゴン形状そのままの凹形状コライダー)
- Rigidbody で Is Kinematic のチェックが外れている(=重力や力で動く動的な剛体)
Unity の物理エンジン(PhysX)では、動的な剛体同士の衝突計算は凸形状を前提にしています。凹形状のメッシュ同士の衝突計算は非常に重く不安定なため、Unity 5 で PhysX 3 系に移行した際にこの組み合わせが禁止されました。凹形状の MeshCollider は「動かない地形や建物」に使うもの、と覚えておくと判断しやすくなります。
なお、Is Trigger を有効にした MeshCollider も Convex が必須です。トリガーとして使いたい場合も同じ考え方で対処します。
対処法
オブジェクトを「物理演算で動かしたいか」「形状の正確さが必要か」で対処を選びます。
| 対処 | 向いているケース | デメリット |
|---|---|---|
| MeshCollider の Convex にチェック | 重力・衝突で自然に動かしたい小物や乗り物 | 凹みが埋まった形(凸包)になる。メッシュの三角形数に上限がある |
| Rigidbody の Is Kinematic にチェック | スクリプトやアニメーションで位置を動かすもの(動く床、エレベーター等) | 重力や他の物体からの力では動かなくなる |
| Rigidbody を削除 | 地形・建物・壁など動かないもの | そのオブジェクトは物理で一切動かない |
| プリミティブコライダーの組み合わせに置き換え | 形状の再現と物理挙動の両方が必要な場合(飛行機、車体など) | コライダーの配置作業が必要 |
対処 1: Convex にチェックを入れる
- Hierarchy でエラーの出ているオブジェクトを選択する
- Inspector の Mesh Collider コンポーネントで Convex にチェックを入れる
- Scene ビューで緑色のコライダー形状を確認し、凹みが埋まっても問題ないかを見る
Convex を有効にすると、Unity はメッシュを包む凸形状(凸包)を自動生成します。このとき使える三角形数には上限(255)があり、細かいメッシュは簡略化されます。カップの内側やトンネルのような「中に入る」形状は埋まってしまうので注意が必要です。
対処 2: Is Kinematic にチェックを入れる
Inspector の Rigidbody で Is Kinematic にチェックを入れます。キネマティックな剛体は物理演算では動かず、transform や Rigidbody.MovePosition でスクリプトから動かします。他の動的な剛体を押し出すことはできるため、動く床や扉などに向いています。
対処 3: 複合コライダーに置き換える
エラー例の「MyAircraft」のように、飛行機を物理で飛ばしつつ形状もある程度再現したい場合は、MeshCollider をやめて子オブジェクトに Box Collider や Capsule Collider を複数配置します。親に Rigidbody を 1 つ付ければ、子のコライダーはまとめて 1 つの剛体として扱われます(複合コライダー)。
MyAircraft (Rigidbody)
├── Body (Capsule Collider) 胴体
├── WingL (Box Collider) 左翼
├── WingR (Box Collider) 右翼
└── Tail (Box Collider) 尾翼
プリミティブコライダーは計算が軽く挙動も安定するため、ゲーム全体のパフォーマンス面でも有利です。
スクリプトから設定する場合
実行時にメッシュを差し替えるなど、コードで設定する場合は次のように書きます。
using UnityEngine;
public class ColliderSetup : MonoBehaviour
{
void Awake()
{
var meshCollider = GetComponent<MeshCollider>();
var rb = GetComponent<Rigidbody>();
if (meshCollider != null && rb != null && !rb.isKinematic)
{
// 動的な Rigidbody と組み合わせるなら Convex 必須
meshCollider.convex = true;
}
}
}
確認方法
- コンソールをクリア(Clear)してから再生し、同じエラーが出ないことを確認する
- Scene ビューで Gizmos を表示し、緑色のコライダー形状が意図した範囲になっているか確認する
- 他のオブジェクトとぶつけて、すり抜けや不自然な跳ね返りがないか試す
エラーが消えない場合は、子オブジェクトにも MeshCollider が付いていないかを確認してください。親に Rigidbody があると、子の MeshCollider も同じ制約を受けます。
よくある質問
Unity 4 のプロジェクトを開いたら大量に出るようになった
Unity 4 までは許可されていた組み合わせのため、古いプロジェクトやアセットをアップグレードすると表面化します。上記の対処をオブジェクトごとに適用してください。
地形(Terrain)や建物にも Rigidbody が付いている
動かないオブジェクトには Rigidbody は不要です。削除すれば凹形状の MeshCollider のまま使えます。
関連
- Unityの衝突検知(Collision)|Collider・Rigidbody・Triggerの使い方
- Unity で重力を変更する方法 — Physics.gravity / Rigidbody / 2D 対応
- Unity Mesh コンポーネント完全ガイド
- Unity Standard Assets「Vehicles」削除後の代替|Wheel Collider
子ページはありません
- Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported in Unity 5.
- Script error: OnCollisionEnter
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09