「岩にぶつかると、体が半分めり込む」「オブジェクトを並べた途端、急にカクつきはじめた」——どちらもUEを触りはじめて数週間で必ず出会う症状です。そして原因はたいてい同じところにあります。 見えている形と、当たっている形が違う ことです。
UEでは1つのメッシュが 2種類の当たり判定 を持っています。軽くて雑な Simple Collision と、正確だけれど重い Complex Collision です。この記事では、この2つの違いと Collision Complexity の設定を整理し、「キャラが埋まる岩」を重くせずに直す方法を解説します。
この記事でわかること
- メッシュは 見た目の形 と 当たりの形 を別々に持っている
- Simple=速いが雑/Complex=正確だが重い
Collision Complexityの4設定と、既定のProject Defaultが何をしているか- 埋まるからといって
Use Complex Collision As Simpleにしてはいけない理由- 実践:埋まる岩を 軽いまま 直す
見た目の形と、当たりの形は別物
まず、UEを触るうえで一番大事な前提から。 画面に表示されている形と、当たり判定に使われている形は、別々のデータ です。

複雑な岩を1つ置いたとき、画面には数万ポリゴンの岩が映ります。ところが当たり判定のほうは、その岩をざっくり覆う 数個の箱 でしかない、ということがよくあります。だから「見た目では隙間があるのに通れない」「岩の窪みに入れるはずなの に入れない」といったズレが起きます。
なぜわざわざ分けているのか。答えはコストです。当たり判定は 移動・トレース・物理から要求されるたびに計算される ので、キャラクターが歩き回るだけでも大量の問い合わせが走ります。数万ポリゴンをそのまま使うと、ここで詰まります。だからUEは「軽い形」を別に用意して、普段はそちらを使っているわけです。
確認方法も覚えておきましょう。Static Meshエディタを開き、ツールバーの Collision メニューで Simple Collision または Complex Collision の表示をオンにすると、当たり判定の形がワイヤーフレームで重なって見えます。表示色は状況によって変わるので、 色ではなくメニューの項目名で見分けてください 。「思っていた形と違う」に気づく最短ルートです。
Simple Collision:速いが、雑
Simple Collision は、箱(Box)・球(Sphere)・カプセル(Capsule)・ 凸包(Convex Hull) といった単純な形の組み合わせで作られた当たり判定です。

- 速い: 数式で一発判定できるので、計算コストが極端に低い
- 雑: 元のメッシュの形は再現しません。凹んだ部分は埋まり、細い部分は太ります
- 主戦場: キ ャラクターの移動、物理演算、押し合い——つまり 毎フレーム判定されるもの全部
ここで覚えておきたいのが 凸包(Convex Hull) という言葉です。「へこみのない形」という意味で、輪ゴムでメッシュ全体を包んだときの外形をイメージしてください。この形では 凹みを表現できません 。ドーナツの穴やコップの内側は埋まってしまう、というのが凸包の性質です。
だからSimple Collisionを1つだけ使うと形が合わないことが多く、実際には 複数の凸包を組み合わせて 近づけていきます。
Complex Collision:正確だが、重い
Complex Collision は、描画に使っている 三角ポリゴンそのもの を当たり判定に使います。

- 正確: 見た目とほぼ一致します。窪みも穴も、そのとおりに当たります
- 重い: 調べる三角形の数が増えるほどコストが上がります(実際には空間的な絞り込みが入るので総当たりではありませんが、Simpleとは桁が違います)
- 主戦場: 銃の弾道判定や視線判定など、 たまにしか走らないトレース
「たまにしか走らない」がポイントです。1発の射撃で1回だけ走るレイキャストなら、正確さを取っても構いませ ん。一方、キャラクターの移動は絶えず判定が走るので、ここにComplexを使うとコストが跳ね上がります。
なお、トレース側がSimpleとComplexのどちらを見るかは、Line Trace ノードの Trace Complex チェックでも切り替わります。「用途で自動的に決まる」わけではなく、 メッシュ側の設定と、トレース側の指定の両方 で決まると覚えてください。
Collision Complexityの4設定
「じゃあどっちを使うのか」を決めるのが、Static Meshアセットの詳細パネルにある Collision Complexity です。ここが混乱しやすいので、図で整理します。

大事なのは、UEが用途を 2つに分けている ことです。ぶつかる・乗る・押される(Collision)と、線を飛ばして調べる(Trace)。設定はこの2つに何を割り当てるかを決めています。
| 設定 | ぶつかる側 | トレース側 | どういうときに |
|---|---|---|---|
| Project Default | プロジェクト設定に従う | 同左 | 既定値。ほとんどのメッシュはこのままで正解 |
| Simple And Complex | Simple | Complex | 明示指定したいとき(Project Defaultの中身も通常これ) |
| Use Simple Collision As Complex | Simple | Simple | トレースも軽くしたいとき。射線の精度は落ちます |
| Use Complex Collision As Simple | Complex | Complex | 地形など、乗る場所の精度が必須のときだけ |
注目したいのは、既定の中身である Simple And Complex です。 「移動は軽いSimpleで、射線は正確なComplexで」 という望ましい使い分けが、最初から入っています。そのため、 基本は触らなくて構いません 。
もう1つ知っておきたいのが、 Use Complex Collision As Simple にしたメッシュは Simulate Physics で物理シミュレーションできなくなる こと。転がる樽や吹き飛ぶ瓦礫には使えません。
Use Complex Collision As Simpleの落とし穴: Complexとして使われるのは LOD 0のメッシュだけ です。遠くでLODが切り替わっても当たり判定は最高精度のまま。「遠いから軽いはず」は成り立ちません。
埋まるからといってComplexにしない
一番やりがちな事故がこれです。「岩に埋まる → Use Complex Collision As Simple にしたら直った」。確かに直りますが、その岩は 問い合わせのたびに数万ポリゴンを相手にする 物体になっています。1個なら気づきません。数が増え、その上を何体も歩かせるようになった頃に効いてきます。
埋まる問題の正しい直し方は、Complexへの切り替えではなく Simpleの形を作り直すこと です。次の実践でやります。
実践:埋まる岩を軽いまま直す
アクションゲームの障害物、オープンワールドの地形装飾、ホラーゲームの瓦礫——「置いた岩にキャラが乗ると腰まで埋まる」はどのジャンルでも起きます。ここではその岩を、 Complexに逃げずに 直します。
再現用の準備: 上面に凹凸のある岩や瓦礫のStatic Meshを1つ用意し、レベルに置いてキャラクターで乗ってみてください。Starter Contentの岩でも、自分でインポートしたメッシュでも構いません。
症状は形によって2通りに出ます。 Simple Collisionが実際の表面より内側にあれば「埋まる」 、 外側を大きく覆っていれば「浮く」「見えない壁に阻まれる」 。どちらも原因は同じで、当たりの形が見た目と違うことにあります。
| 対象 | 設定 | 備考 |
|---|---|---|
| 適当な岩や瓦礫のStatic Mesh | Collision Complexity = Project Default | 変えません。ここが出発点です |
| キャラクター | 標準のThird Personテンプレー ト | カプセルの半径・高さは既定のまま |
ステップ1:まず形を見る。 Static Meshエディタでそのメッシュを開き、ツールバーの Collision メニューから Simple Collision の表示をオンにします(Complex Collision は別項目なので、取り違えないよう項目名で確認してください)。おそらく 岩全体をすっぽり覆う1個の箱 か、大まかな凸包が1つだけ出てきます。上面の凹凸が全部無視されているのが、ズレの原因です。

ステップ2:いまのSimple Collisionを捨てる。 Collision メニューから Remove Collision を実行します。消えるのは Simple Collisionだけ で、メッシュ自体やComplex用のデータは残ります。
ステップ3:凸包を自動生成する。 Collision → Auto Convex Collision を選ぶと、下部にパネルが出ます。ここで触るのは2つだけです。
| パラメータ | 意味 | 最初の値 |
|---|---|---|
| Hull Count | 生成する凸包数の 上限 (必ずこの数になるわけではありません) | 8 から試す |
| Max Hull Verts | 1つの凸包の頂点数 | 16(既定のまま) |
| Hull Precision | 近似の細かさ | 既定のまま(結果が変わるので、比べるときは固定しておく) |
Apply を押すと、岩の形に沿った 複数の凸包 が生成されます。1個の箱では表せなかった凹凸が、分割によって表現できるようになります。

ステップ4:足りないところは手で足す。 それでも特定の窪みが合わないなら、Collision → Add Box Simplified Collision でプリミティブを1つ足します。追加しただけでは大きな箱が中央に出るだけなので、 そのままビューポートで選択し、移動・回転・拡縮して合わせます 。 全体を精密にする必要はありません 。キャラが触る場所だけ合っていれば十分です。
ステップ5:保存する。 Static Meshアセットを保存します。これを忘れるとエディタを閉じた瞬間に作業が消えます。
Playして岩に乗ってみてください。 ズレていた立ち位置が、見た目の表面とほぼ一致していれば成功です 。凸包は近似なので完全一致はしませんが、ゲーム中に違和感がない範囲に収まれば十分です。
うまくいかないときは、Collision 表示をオンにしたまま確認します。
- まだズレる → Hull Countを16に増やす、
Hull Precisionを上げる、またはその部分にプリミティブを1つ足す - 見えない壁に阻まれる → 凸包が膨らみすぎています。分割数を増やすと張り付きが良くなります
- 薄い板や穴のある形が再現できない → 凸包が苦手な形状です。プリミティブを手で組むほうが早いことがあります
- 重くなった → 凸包1つ1つが判定対象です。増やしすぎていないか見直します
ポイントは2つです。
- 精度は「キャラが触る場所」だけでいい: 岩の裏側や上空の形が多少ずれていても、誰も気づきません。全体を正確にしようとするから重くなります
- Hull Countは増やすほど良いわけではない: 凸包1つ1つが判定対象なので、数が増えればコストも増えます。 形が合った時点で止める のが正解で、必要な数はメッシュ次第です
地形のように「どうしても表面どおりに歩かせたい」ものだけ、Use Complex Collision As Simple を検討します。ただし、1つ誤解しやすい点があります。 描画のLODや距離カリングでは、コリジョンの負荷は減りません 。画面に映っていなくても当たり判定は残っているので、負荷を本当に外すならActorやレベルごとアンロードする必要があります(→ レベルストリーミング)。
なお、UEの Landscape で作った地形は事情が違います。Landscapeには Collision Mip Level という専用の設定 があり、Static Meshのこの話はそのまま当てはまりません。
おまけ:先に知っておくと良いこと
「当たるかどうか」と「何に当たるか」は別の設定です。 この記事で扱ったのは当たり判定の 形 の話。「プレイヤーには当たるが弾はすり抜ける」といった 相手ごとの反応 は Collision Preset とチャンネルの担当で、まったく別のレイヤーです(→ コリジョンチャンネルとプリセット)。形を直しても意図どおりに当たらないときは、そちらを疑ってください。
キャラクターの移動はメッシュではなくカプセルで当たっています。 Characterが移動に使うのは CapsuleComponent なので、狭い通路を通れるかどうかは カプセルの半径と高さ で決まります(メッシュの形をいくら整えても変わりません)。一方、部位ごとの被弾判定は別の話で、Skeletal Meshの Physics Asset に入っているBodyを使うのが一般的です。
Nanite化したメッシュのコリジョンは別データです。 Naniteはあくまで 描画 の仕組みで、当たり判定は従来どおりSimple/Complexを使います。「Naniteにしたから当たり判定も自動で最適化される」わけではないので、コリジョンは変わらず自分で設計します(→ Naniteの仕組み)。
まとめ
コリジョン設定で迷ったら、この順番で考えてください。
| 状況 | どうする |
|---|---|
| 普通のメッシュを置く | Project Default のまま。何もしない |
| キャラが埋まる/引っかかる | Auto Convex Collision で凸包を作り直す |
| それでも合わない | プリミティブを 1つだけ 手で足す |
| 地形など表面精度が必須 | Use Complex Collision As Simple 。ただし LODやカリングでは負荷が減らない ので、範囲を絞るならActorやレベルごとアンロードする |
| 射線だけ正確にしたい | 何もしない(既定ですでにトレースはComplex側を見る) |
軽さと正確さは、用途ごとに使い分けるもの です。UEの既定値はその使い分けを最初から持っているので、まず疑うべきは設定ではなく Simple Collisionの形 です。ここを直せば、ほとんどの「埋まる」は軽いまま解決します。
いま置いてある岩、当たり判定の形を一度見てみませんか?