【Unreal Engine】Simple CollisionとComplex Collisionの違いとパフォーマンス最適化

作成: 2025-12-12最終更新: 2026-07-19

キャラクターがメッシュに埋まる、置いた瞬間に重くなる——原因はコリジョンの形です。Simple/Complexの違いをCollision Complexityの4設定とあわせて図解し、埋まる岩を軽いまま直す実践まで。

「岩にぶつかると、体が半分めり込む」「オブジェクトを並べた途端、急にカクつきはじめた」——どちらもUEを触りはじめて数週間で必ず出会う症状です。そして原因はたいてい同じところにあります。 見えている形と、当たっている形が違う ことです。

UEでは1つのメッシュが 2種類の当たり判定 を持っています。軽くて雑な Simple Collision と、正確だけれど重い Complex Collision です。この記事では、この2つの違いと Collision Complexity の設定を整理し、「キャラが埋まる岩」を重くせずに直す方法を解説します。

見えている岩の形と、当たり判定に使われている箱の形が違うイメージ

この記事でわかること

  • メッシュは 見た目の形当たりの形 を別々に持っている
  • Simple=速いが雑/Complex=正確だが重い
  • Collision Complexity の4設定と、既定の Project Default が何をしているか
  • 埋まるからといって Use Complex Collision As Simple にしてはいけない理由
  • 実践:埋まる岩を 軽いまま 直す

Sponsored

見た目の形と、当たりの形は別物

まず、UEを触るうえで一番大事な前提から。 画面に表示されている形と、当たり判定に使われている形は、別々のデータ です。

左は描画されている岩のメッシュ、右はそれを覆う数個の箱で表された当たり判定、という対比図

複雑な岩を1つ置いたとき、画面には数万ポリゴンの岩が映ります。ところが当たり判定のほうは、その岩をざっくり覆う 数個の箱 でしかない、ということがよくあります。だから「見た目では隙間があるのに通れない」「岩の窪みに入れるはずなのに入れない」といったズレが起きます。

なぜわざわざ分けているのか。答えはコストです。当たり判定は 移動・トレース・物理から要求されるたびに計算される ので、キャラクターが歩き回るだけでも大量の問い合わせが走ります。数万ポリゴンをそのまま使うと、ここで詰まります。だからUEは「軽い形」を別に用意して、普段はそちらを使っているわけです。

確認方法も覚えておきましょう。Static Meshエディタを開き、ツールバーの Collision メニューで Simple Collision または Complex Collision の表示をオンにすると、当たり判定の形がワイヤーフレームで重なって見えます。表示色は状況によって変わるので、 色ではなくメニューの項目名で見分けてください 。「思っていた形と違う」に気づく最短ルートです。

Simple Collision:速いが、雑

Simple Collision は、箱(Box)・球(Sphere)・カプセル(Capsule)・ 凸包(Convex Hull) といった単純な形の組み合わせで作られた当たり判定です。

箱・球・カプセル・凸包の4種類のプリミティブが並んだ図
  • 速い: 数式で一発判定できるので、計算コストが極端に低い
  • : 元のメッシュの形は再現しません。凹んだ部分は埋まり、細い部分は太ります
  • 主戦場: キャラクターの移動、物理演算、押し合い——つまり 毎フレーム判定されるもの全部

ここで覚えておきたいのが 凸包(Convex Hull) という言葉です。「へこみのない形」という意味で、輪ゴムでメッシュ全体を包んだときの外形をイメージしてください。この形では 凹みを表現できません 。ドーナツの穴やコップの内側は埋まってしまう、というのが凸包の性質です。

だからSimple Collisionを1つだけ使うと形が合わないことが多く、実際には 複数の凸包を組み合わせて 近づけていきます。

Complex Collision:正確だが、重い

Complex Collision は、描画に使っている 三角ポリゴンそのもの を当たり判定に使います。

凸包では埋まってしまう岩の窪みも、Complexなら三角ポリゴンどおりに判定される図
  • 正確: 見た目とほぼ一致します。窪みも穴も、そのとおりに当たります
  • 重い: 調べる三角形の数が増えるほどコストが上がります(実際には空間的な絞り込みが入るので総当たりではありませんが、Simpleとは桁が違います)
  • 主戦場: 銃の弾道判定や視線判定など、 たまにしか走らないトレース

「たまにしか走らない」がポイントです。1発の射撃で1回だけ走るレイキャストなら、正確さを取っても構いません。一方、キャラクターの移動は絶えず判定が走るので、ここにComplexを使うとコストが跳ね上がります。

なお、トレース側がSimpleとComplexのどちらを見るかは、Line Trace ノードの Trace Complex チェックでも切り替わります。「用途で自動的に決まる」わけではなく、 メッシュ側の設定と、トレース側の指定の両方 で決まると覚えてください。

Sponsored

Collision Complexityの4設定

「じゃあどっちを使うのか」を決めるのが、Static Meshアセットの詳細パネルにある Collision Complexity です。ここが混乱しやすいので、図で整理します。

当たり判定(Collision)とトレース(Trace)の2つの用途に対して、4つの設定がそれぞれ何を割り当てるかの表図

大事なのは、UEが用途を 2つに分けている ことです。ぶつかる・乗る・押される(Collision)と、線を飛ばして調べる(Trace)。設定はこの2つに何を割り当てるかを決めています。

設定ぶつかる側トレース側どういうときに
Project Defaultプロジェクト設定に従う同左既定値。ほとんどのメッシュはこのままで正解
Simple And ComplexSimpleComplex明示指定したいとき(Project Defaultの中身も通常これ)
Use Simple Collision As ComplexSimpleSimpleトレースも軽くしたいとき。射線の精度は落ちます
Use Complex Collision As SimpleComplexComplex地形など、乗る場所の精度が必須のときだけ

注目したいのは、既定の中身である 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 MeshCollision Complexity = Project Default変えません。ここが出発点です
キャラクター標準のThird Personテンプレートカプセルの半径・高さは既定のまま

ステップ1:まず形を見る。 Static Meshエディタでそのメッシュを開き、ツールバーの Collision メニューから Simple Collision の表示をオンにします(Complex Collision は別項目なので、取り違えないよう項目名で確認してください)。おそらく 岩全体をすっぽり覆う1個の箱 か、大まかな凸包が1つだけ出てきます。上面の凹凸が全部無視されているのが、ズレの原因です。

岩を覆う1個の大きな箱と、実際の岩の輪郭がずれていて、キャラクターが宙に浮いたり埋まったりしている図

ステップ2:いまのSimple Collisionを捨てる。 Collision メニューから Remove Collision を実行します。消えるのは Simple Collisionだけ で、メッシュ自体やComplex用のデータは残ります。

ステップ3:凸包を自動生成する。 Collision → Auto Convex Collision を選ぶと、下部にパネルが出ます。ここで触るのは2つだけです。

パラメータ意味最初の値
Hull Count生成する凸包数の 上限 (必ずこの数になるわけではありません)8 から試す
Max Hull Verts1つの凸包の頂点数16(既定のまま)
Hull Precision近似の細かさ既定のまま(結果が変わるので、比べるときは固定しておく)

Apply を押すと、岩の形に沿った 複数の凸包 が生成されます。1個の箱では表せなかった凹凸が、分割によって表現できるようになります。

1個の大きな箱ではなく、8個の凸包が岩の形に沿って組み合わさっている図

ステップ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のこの話はそのまま当てはまりません。

Sponsored

おまけ:先に知っておくと良いこと

「当たるかどうか」と「何に当たるか」は別の設定です。 この記事で扱ったのは当たり判定の の話。「プレイヤーには当たるが弾はすり抜ける」といった 相手ごとの反応 は 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の形 です。ここを直せば、ほとんどの「埋まる」は軽いまま解決します。

いま置いてある岩、当たり判定の形を一度見てみませんか?