岩のくぼみへ降りたつもりなのに、足が少し浮いている。通れそうな隙間で、見えない壁に止められる。そんなときは、岩の見た目に重ねて「当たる形」を表示してみましょう。
UEでは、画面へ描く形と、衝突を調べる形を分けて扱えます。 岩の細かな凹凸をすべて判定に使う場合もあれば、箱などの形で大まかに包む場合もあります。この違いが分かると、見えない壁を直す場所も見つけやすくなります。
今回の題材は、岩や小物によく使う Static Mesh(形を変形させずに扱うモデル)です。SimpleとComplexの形を見比べ、複製した岩の当たり判定を整えましょう。設定の名前を覚えるだけでなく、自分のゲームでどの形が必要かを判断できるようにしていきます。

この記事でわかること
- 見た目と当たり判定のずれを調べる方法
- Simple、Complex、凸包の違い
- Collision ComplexityとTrace Complexの役割
- Auto Convexで形を作り、触れる場所を調整する手順
見た目の形と、当たる形を見比べる
Collision(コリジョン)は、物がぶつかるか、重なっているかを調べるための当たり判定です。たとえば岩に近づいたキャラクターがどこで止まるかは、画面の色や模様ではなく、判定に使う形で決まります。
箱1個で岩を包むと、その箱がくぼみの上まで覆ってしまうことがあります。キャラクターは箱の上で止まるため、見た目では宙に立っているように見えます。反対に、当たる形が表面より内側にあると、体の一部が岩へ埋まって見えます。

まずは形を表示します。
- コンテンツブラウザでStatic Meshア セットをダブルクリックする
- 開いたStatic Meshエディタのビューポートで「Show」を開く
- 「Simple Collision」をオンにする
- 次にSimpleの表示をオフにし、「Complex Collision」をオンにして比べる
版によってはツールバーのCollisionボタンからも表示を切り替えられます。表示色ではなく、SimpleかComplexかの項目名で見分けます。形を追加・削除する「Collision」メニューと、表示のオン・オフは別の操作です。
Simpleをオンにしても輪郭が出ない場合は、Simpleの形がまだ用意されていない可能性があります。「見えないので問題なし」とせず、次の節で形の違いを確認しましょう。
Simple Collision:単純な形を組み合わせる
Simple Collisionは、箱(Box)、球(Sphere)、カプセル(Capsule)、凸包(Convex Hull)などで作る判定です。木箱なら箱、ボールなら球というように、少ない形で必要な部分を表せます。

凸包は、へこみのない形です。上から見た輪郭に輪ゴムをかけると、外側の出っ張りを結ぶ線になり、くぼみの中までは入りません。その包み方を立体にしたもの、と考えると分かりやすくなります。
ただし、Simpleではくぼみを一切作れない、という意味ではありません。左右の出っ張りと底を別の形に分ければ、その間に空間 を残せます。入口のある建物なら、壁を左右と上に分けることで、入口を箱で塞がずに済みます。

大切なのは、見た目の細かさより、プレイヤーが触れる場所に形を合わせることです。細かな傷まで判定へ写す必要はなくても、通ってほしい入口を塞いでしまってはいけません。
Complex Collision:三角形で表面を調べる
Complex Collisionは、メッシュの三角形を使う判定です。メッシュは小さな三角形をつなげて立体の表面を表しているので、その表面に沿って接触位置を調べられます。
たとえば岩へ照準を向け、当たった場所に印を置くなら、大きな箱の表面より岩の表面に置きたいはずです。このような、表面の形が結果に関わる判定で候補になります。
ここでいうトレースは、線や決まった形を伸ばし、「途中に何があるか」を調べる処理です。Line Traceの記事で、照準から線を飛ばす例を作れます。
Line Traceの「Trace Complex」をオンにするとComplexを使うよう要求し、オフならSimpleを要求します。ただし、最終的に使われる形は、次のメッシュ側の設定にも左右されます。トレースだから自動でComplexになるわけではありません。

三角形を使う判定は、少数の単純形状と比べてメモリや計算が増えることがあります。とはいえ、Simpleにも形の数があり、判定を行う回数や範囲も違います。「Complexという名前だから必ず重い」と決めつけず、必要な精度から選びます。
Collision Complexityの4設定
Static Meshエディタの詳細パネルで「Collision Complexity」を探します。これは、Simpleを使いたい要求と、Complexを使いたい要求に、どの形を渡すかを決める設定です。
| 設定 | Simpleを要求したとき | Complexを要求したとき |
|---|---|---|
| Project Default | プロジェクト設定に従う | プロジェクト設定に従う |
| Simple And Complex | Simple | Complex |
| Use Simple Collision As Complex | Simple | Simple |
| Use Complex Collision As Simple | Complex | Complex |
Simple And Complexなら、Line TraceのTrace Complexを切り替えて、箱などの形と三角形の形を使い分けられます。Use Simple Collision As Complexでは、オンにしてもSimpleが使われます。
Project Defaultは、プロジェクトの「Physics」設定にあるDefault Shape Complexityを引き継ぎます。プロジェクトによって変更されている場合があるため、既定の中身を確かめたいときは、そちらも確認します。

Complexを使うかは、形と動かし方で選ぶ
動かさない複雑な足場などでは、Use Complex Collision As Simpleも選択肢です。表面に沿って立てることが大切で、単純な形では合わせにくい場合に検討できます。
ただし、そのメッシュ自身をSimulate Physicsで落としたり転がしたりする用途には使えません。 別のSimple Collisionを持つ物理オブジェクトが、その足場へぶつかることはできます。足場自身を動かす話と、足場に物が当たる話を分けて考えます。
次の実践では、まずSimpleの形を直す方法を試します。形を整えれば、Complexへ切り替えなくても、見えない壁や足元のずれを改善できるためです。
実践:岩の当たり判定を整える
歩けるキャラクターと床のある練習レベルを使います。Enhanced Inputの入門のBP_InputPracticeでも、Third Personテンプレートでも構いません。
題材は岩のStatic Meshです。Starter Contentがある場合は、コンテンツブラウザでSM_Rockを検索できます。ない場合は、すでに用意した凹凸のある岩で試せます。ここでは、元の当たり判定がどんな形でも比較を始められるよう、複製側へ箱を1個作ります。
1. 練習用にアセットを複製する
コンテンツブラウザで岩のStatic Meshを複製し、SM_RockCollisionPracticeと名付けます。レベルにはこの複製を置いてください。
レベル上の岩を複製するだけでは、同じStatic Meshアセットを使い続けます。 アセット側の判定を変えると、それを使うほかの岩にも反映されるので、今回はコンテンツブラウザ側で複製します。

配置した岩はMobilityをStatic、Simulate Physicsをオフ、Collision PresetsをBlockAllにします。岩の下側を床に埋め、周囲から近づける位置へ置きます。ScaleはX・Y・Zを同じ値にし、キャラクターと比べながら大きさを揃えます。
2. 箱1個とのずれを観察する
SM_RockCollisionPracticeを開き、Collision ComplexityをSimple And Complexにします。今回はプロジェクトの既定値によらず、Simpleの形を使う条件を揃えるためです。
- 「Collision」→「Remove Collision」で既存のSimpleを取り除く
- 「Collision」→「Add Box Simplified Collision」で箱を1個加える
- 「Show」→「Simple Collision」で箱の輪郭を表示する
- アセットを保存する
Remove Collisionで消すのはSimpleの形です。画面へ描く岩そのものを消す操作ではありません。
表示された箱と岩を回して見比べ、箱のほうが外へ出ている場所を1か所探します。そこは、見た目の表面へ届く前にキャラクターが止まりやすい場所です。
Playで岩の側面へ近づき、どこで止まるか確かめます。上へ乗れる大きさなら、ジャンプして足元も見てください。箱の形とほぼ合う岩では、大きな違いが出ない場合もあります。浮く症状を無理に探すより、まず輪郭と接触位置を対応させます。
3. Auto Convexで岩をいくつかの形へ分ける
Playを止め、同じアセットへ戻ります。比較用の箱をRemove Collisionで取り除いてから、「Collision」→「Auto Convex Collision」を開きます。
Auto Convexは、メッシュをいくつかの凸形状に分けて、Simple Collisionを作るツールです。1つの包みでは塞いでいた空間も、分け方によって残せるようになります。
| 項目 | 今回試す値 | 何を調整するか |
|---|---|---|
| Hull Count | 8 | 生成する凸包の数の上限 |
| Max Hull Verts | 16 | 1つの凸包に使う頂点数の上限 |
| Hull Precision | 50000 | 元の形を調べる細かさ |
頂点は、形の角になる点です。Max Hull Vertsを増やすと1つの形を細かく表せますが、まずは上の値で結果を見ます。これらは今回の出発点で、すべての岩に合う正解値ではありません。
「Apply」を押し、生成が終わるまで待ちます。Simple Collisionを表示し、さきほど箱がはみ出していた場所を同じ角度から見ます。Hull Countが8でも、必ず8個になるわけではありません。
ここで比べるのは、形の数より触れたい場所へ輪郭が近づいたかです。変化を確認してから保存し、もう一度Playで同じ側面や足場を試します。

4. はみ出す部分と、足りない部分を分けて直す
自動生成で十分に合ったなら、そこで調整を終えて構いません。まだ一部だけずれる場合は、その場所を直します。
Simple Collisionの輪郭をクリックすると、移動などの操作ハンドルが出ます。Wで移動、Eで回転、Rで拡縮へ切り替えられます。
はみ出している場合は、該当する凸包を選び、移動・拡縮するか、必要に応じてDelete Selected Collisionで取り除きます。大きすぎる形の上へ別の箱を足しても、はみ出しは消えません。
必要な場所に形が足りない場合は、Add Box Simplified Collisionなどで形を足します。追加直後は岩全体を包む形になるので、選択した形を縮め、移動・回転して必要な場所へ合わせます。
編集しているのが岩の見た目ではなく、判定用の輪郭であることを確認してください。入口やくぼみでは、左右や底を別々の形で支え、通す空 間を塞がないようにします。
5. 同じ場所で、もう一度確かめる
アセットを保存し、最初と同じ方向から岩へ近づきます。
- 側面に近づいたとき、不自然に手前で止まらない
- 足場にしたい面へ乗ったとき、目立つ浮きや埋まりがない
- 通す予定の隙間が、判定の形で塞がれていない
- 足場や壁として必要な場所を、すり抜けない
見た目と完全に同じ形を目指す必要はありません。ゲーム中に触れる場所が、遊びに支障のない形になれば成功です。
うまく合わないときのチェック
| 症状 | 次に見るところ |
|---|---|
| Simpleを表示しても何も出ない | 形を追加したか、別のStatic Meshを開いていないか |
| 見えない壁が残る | 大きな箱や凸包が残っていないか。足すだけでなく、余分な形を小さくしたか |
| Auto Convex後もくぼみが塞がる | Hull Countを少し増やして比較するか、そこを手作業の形に分ける |
| 岩を完全にすり抜ける | 配置した岩のCollision Presets、使っているアセット、Simpleの有無を確認する |
| 岩側の形は合うのに狭い場所を通れない | キャラクター側のCapsuleComponentの幅と高さを確認する |
| 表面に届くが、急な斜面を登れない | 形のずれに加え、Character Movementの歩ける角度を確認する |
| Simpleを直しても接触位置が変わらない | ComplexityがUse Complex Collision As Simpleになっていないか |
| ほかの岩まで変わった | レベル上の配置だけを複製し、同じStatic Meshを編集していないか |
Characterの移動は、通常CapsuleComponentというカプセル形で判定します。岩側が正しくても、通路がそのカプセルより狭ければ通れません。Character Movementの記事では、速度・ジャンプ・斜面など、動く側の設定を扱います。
おまけ:精度と負荷を考えるときに
形の話と、当たる相手の話を分ける
この記事で整えたのは、判定に使う形です。「プレイヤーを止める」「弾は通す」といった相手ごとの反応は、Collision Presetやチャンネルで決めます。
形を直しても期待した相手へ反応しない場合は、コリジョンチャンネルとプロファイルへ進みます。形と反応を順に確認すると、むやみに精度を上げずに原因を探せます。
当たり判定のLODは、画面のLODと分けて考える
LODは、同じモデルを細かさの違う形で用意する仕組みです。Static MeshのComplex Collisionでは「LOD For Collision」で使うLODを指定できます。常にLOD 0だけ、というわけではありません。
ただし、描画が遠くで粗いLODへ切り替わっても、当たり判定が距離に応じて同じように切り替わるわけではあ りません。画面へ描く量と、当たり判定に使う形は別に確認します。
Naniteでは、Complex用にFallback Meshという別の簡略形状が使われます。見た目の細部と判定が合わないときは、Complexでも使われている形を確認します。
LandscapeはStatic Meshとは別の地形機能で、当たり判定にも専用の設定があります。地形の作り方は、Landscapeの記事で扱います。
軽くしたいときは、実際の場面で比べる
Simpleでも凸包を増やしすぎれば、判定する形が増えます。一方、Complexの負荷も、三角形の数だけでなく、何を何回調べるかで変わります。
負荷が気になる場合は、同じレベル、同じ移動経路、同じ判定回数で設定を変えて比べます。画面が重い原因を当たり判定と決めつけず、Unreal Insightsなどで処理時間を調べます。
遠くにあるだけで毎回すべての三角形を総当たりするわけでも、画面から隠れれば判定が消えるわけでもありません。必要な場所の形と、そもそも判定が必要な対象を整理することから始めます。
まとめ
当たり判定で迷ったら、最初に見た目へ輪郭を重ね、どこがずれているかを見ます。Simpleは単純な形の組み合わせ、Complexは三角形による判定です。どちらを使うかは、メッシュ側と判定する側の指定を合わせて考えます。
岩なら、箱1個の形を確認し、Auto Convexで分け、必要な場所だけ手で整えるところまで試してみてください。見えない壁の正体が分かれば、自分のゲームでどこを直せばよいかも判断しやすくなり ます。
参考:SimpleとComplex、Static Meshエディタ、Auto Convex Collision、Naniteの技術詳細。