2.

UE5のOverlapAllとOverlapAllDynamicの違い|コリジョンプリセットの使い分け

編集

UE5のコリジョンプリセット「OverlapAll」と「OverlapAllDynamic」の違いは、そのオブジェクト自身の Object Type(オブジェクトタイプ)です。OverlapAll は自身を WorldStatic(動かない物)として扱い、OverlapAllDynamic は自身を WorldDynamic(動く物)として扱います。どちらも「すべてのチャンネルに Overlap で応答する」点は共通で、Overlap 応答そのものに差はありません。違うのは「自分が相手からどのタイプとして判定されるか」です。

この記事の要点
  • 両者の本質的な違いは Object Type の一点。OverlapAll = WorldStatic、OverlapAllDynamic = WorldDynamic
  • どちらも全チャンネルに対する応答はOverlapで同じ。物理的なブロック(押し返し)は発生しない。
  • Object Type は「自分が相手から何として見られるか」を決める。相手側が WorldStatic と WorldDynamic を別々に応答設定している場合、結果が変わる。
  • 原則として、動かない物には OverlapAll(WorldStatic)動く物には OverlapAllDynamic(WorldDynamic)を使う。
  • ブロックさせたい場合は対になる BlockAll / BlockAllDynamic を使う(こちらも WorldStatic / WorldDynamic の違い)。
  • 用途が固定的なら、専用のカスタムプリセットを作成するのが取り違え防止に有効。

コリジョンプリセットとは

UE5 のコリジョン設定は、本来「Object Type(自分のオブジェクトタイプ)」と「Collision Responses(各チャンネルに対する応答)」の組み合わせで決まります。応答には次の3種類があります。

  • Ignore:相手を完全に無視する(イベントも発生しない)。
  • Overlap:すり抜けるが、重なったときに OnComponentBeginOverlap などのオーバーラップイベントを発生させる。
  • Block:物理的に衝突し、押し返す(Hit イベントが発生)。

これらを毎回手動で設定するのは煩雑なため、UE5 はよく使う組み合わせをコリジョンプリセットとして用意しています。NoCollisionBlockAllOverlapAllOverlapAllDynamic などがそれにあたり、プリセットを選ぶだけで Object Type と全チャンネルの応答が一括で設定されます。

OverlapAll とは

OverlapAll は、Epic 公式ドキュメントの説明で「WorldStatic object that overlaps all actors by default(既定で全アクターと Overlap する WorldStatic オブジェクト)」と定義されています。要点は次の2つです。

  • 自身の Object Type は WorldStatic。つまり「動かない物」という前提のタイプ。
  • すべてのチャンネル(WorldStatic / WorldDynamic / Pawn / PhysicsBody など)に対して応答は Overlap。ブロックはしない。

レベルに静的に配置するトリガーボリュームなど、「自分自身は動かないが、入ってきたものを検知したい」という用途を想定したプリセットです。

OverlapAllDynamic とは

OverlapAllDynamic は、公式ドキュメントで「WorldDynamic object that overlaps all actors by default(既定で全アクターと Overlap する WorldDynamic オブジェクト)」と定義されています。

  • 自身の Object Type は WorldDynamic。つまり「動く物」という前提のタイプ。
  • すべてのチャンネルに対する応答は Overlap(ここは OverlapAll と完全に同じ)。

ゲーム中に移動・スポーン・破壊されるアクター(飛び道具、拾えるアイテム、移動するセンサーなど)で、相手をすり抜けつつオーバーラップを検知したい場合を想定しています。名前の「Dynamic」は「動的オブジェクトだけを検知する」という意味ではなく、「自分自身が WorldDynamic である」という意味である点に注意してください。

両者の本質的な違い(比較表)

違いは「自身の Object Type」の一点に集約されます。Overlap の応答対象や挙動そのものは同じです。

項目 OverlapAll OverlapAllDynamic
自身の Object TypeWorldStatic(動かない物)WorldDynamic(動く物)
全チャンネルへの応答OverlapOverlap
物理ブロック(押し返し)なしなし
オーバーラップイベント発生する発生する
想定する使いどころレベルに固定配置するトリガー等移動・生成される検知用アクター等
相手から見たときの分類WorldStatic として判定されるWorldDynamic として判定される

つまり「すべてに Overlap する」という応答の中身は共通で、自分が相手にとって WorldStatic に見えるか WorldDynamic に見えるかだけが異なります。

「動く物/動かない物」での使い分け

Object Type は、相手側のコリジョン設定が WorldStatic と WorldDynamic を区別しているときに効いてきます。たとえば、ある検知アクターが「WorldDynamic にだけ Overlap、WorldStatic は Ignore」という応答を持っていたとします。このとき、

  • 相手側に OverlapAll(WorldStatic)を設定したアクターは Ignore され、オーバーラップが発生しません。
  • 相手側に OverlapAllDynamic(WorldDynamic)を設定したアクターは Overlap し、イベントが発生します。

このように、両プリセットは「自分側の応答」は同じでも、「相手側からどう扱われるか」で結果が変わります。実用上の指針はシンプルです。

  • レベルに固定で置く・動かさない物(建物、地形に置いたトリガーゾーンなど)→ OverlapAll(WorldStatic)。
  • ゲーム中に動く・生成される物(弾、移動センサー、ドロップアイテムなど)→ OverlapAllDynamic(WorldDynamic)。

Object Type を実態(動くのか動かないのか)と一致させておくことで、相手側のチャンネル設定が意図どおりに働きます。

他プリセット(BlockAll など)との関係

「Static 版」と「Dynamic 版」の対構造は Overlap 系だけのものではありません。ブロックさせたい場合に使う BlockAll 系にも同じ対応があります。

プリセット Object Type 既定の応答
OverlapAllWorldStatic全チャンネル Overlap
OverlapAllDynamicWorldDynamic全チャンネル Overlap
BlockAllWorldStatic全チャンネル Block
BlockAllDynamicWorldDynamic全チャンネル Block

整理すると、UE5 のプリセットは「Overlap か Block か(応答)」と「WorldStatic か WorldDynamic か(Object Type)」という2軸の組み合わせになっています。OverlapAll と OverlapAllDynamic の関係は、ちょうど BlockAll と BlockAllDynamic の関係と同じです。すり抜けつつ検知したいなら Overlap 系、押し返したいなら Block 系を選び、その上で動く物かどうかで Dynamic の有無を選ぶ、と考えると分かりやすくなります。

落とし穴と注意点

つまずきやすいポイント
  • 「Dynamic=動的な物だけ検知」と誤解しない:OverlapAllDynamic の Dynamic は「自分が WorldDynamic」という意味で、検知する相手を絞る設定ではありません。どちらのプリセットも応答対象は全チャンネルです。
  • Object Type の取り違えで検知が起きない/余計に起きる:相手側が WorldStatic と WorldDynamic を分けて設定していると、プリセット選択を間違えただけで、本来検知すべきものを見逃したり、無視されたりします。
  • Overlap はブロックしない:どちらも物理的な押し返しは行いません。床や壁として止めたい場合は Overlap 系ではなく Block 系を使います。
  • イベントを受け取るには両側の設定が必要:オーバーラップイベントは原則として、関与する双方が Overlap で応答し、かつ Generate Overlap Events が有効である必要があります。片側だけの設定では発火しないことがあります。
  • 用途が決まっているならカスタムプリセット推奨:プロジェクトの Project Settings > Collision で専用プリセットを定義しておくと、Object Type と応答を意図どおりに固定でき、既定プリセットの取り違えを防げます。細かな応答の既定値はエンジンのバージョンで差異が生じうるため、最終的には公式ドキュメントとエディタ上の実際の設定で確認することを推奨します。

よくある質問(FAQ)

Q1. OverlapAll と OverlapAllDynamic は、どちらが多くのオブジェクトを検知しますか?

A. 検知する「数」に差はありません。どちらも全チャンネルに Overlap で応答するため、検知対象は同じです。違うのは自分が相手から WorldStatic として見られるか、WorldDynamic として見られるかだけです。相手側がこの2タイプを区別している場合にのみ、結果に差が出ます。

Q2. 動かないトリガーゾーンにはどちらを使うべきですか?

A. レベルに固定配置して動かさないなら、Object Type が WorldStatic の OverlapAll が実態に合っています。逆に、ゲーム中に移動・生成されるアクターには WorldDynamic の OverlapAllDynamic が適しています。

Q3. すり抜けずに物理的に止めたい場合はどうすればよいですか?

A. Overlap 系はブロックしません。押し返したい場合は BlockAll(WorldStatic)または BlockAllDynamic(WorldDynamic)を使います。ここでも「動かない物なら BlockAll、動く物なら BlockAllDynamic」という同じ考え方で選べます。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 床の上に乗ったらイベントを発生させる方法
  2. OverlapAllDynamicとOverlapAllの違い
  3. タイトル画面を作る方法
  4. サードパーソンテンプレートでのキャラクター表示の仕組みと非表示にする方法
  5. ボタンに文字を記載する方法
  6. Event ActorBeginOverlapとOn Component Begin Overlapの違い
  7. キャラクターに特定のオブジェクトとの当たり判定を付ける
  8. 特定のオブジェクトに触れたとき、キャラクターが倒れるようにする
  9. 動いているオブジェクトに静止しているキャラクターが当たり判定を持たない原因と解決方法
  10. 「On Component Hit」に「Cast To ~」で複数のクラスを指定する方法
  11. Blenderファイルをインポートする方法
  12. 鏡を作成する方法
  13. レベルブループリントでキャラクターの出現を設定する方法
  14. サードパーソンテンプレートにおけるキャラクター出現の定義
  15. アイテムに近づいたらボタンを押してイベントを発火させる方法
  16. 画面の中央にメッセージを表示する方法
  17. どこからでも呼び出せるカスタムイベントを作成する方法
  18. カスタムイベントに引数を追加する方法
  19. 「Get Overlapping Actors」から特定のクラスの場合のみ処理を実行する方法
  20. オブジェクトに近づいている間だけメッセージを表示する方法
  21. PCの画面を操作するUIを作る方法
  22. コンテンツブラウザに画像を追加する方法
  23. SetInputMode_UIOnlyを取り消す方法
  24. 特定の画像の上にマウスカーソルを置いたら手マークにする方法
  25. オブジェクトがアウトライナーで選択できない原因と解決策
  26. PlayerStartを作成する方法
  27. メニュー画面を作成して開く方法
  28. 「Esc」キーを押してメニュー画面を開く方法
  29. イベントの「On Clicked」と「On Pressed」の違い
  30. 「Set Input Mode」の種類と使い方
  31. 「Set Game Paused」の使い方と詳細解説
  32. Motion Matchingとは?
  33. 「GameMode」と「GameModeBase」の違い
  34. マップに配置したTargetPointを取得する方法
  35. TargetPointにタグをつけて取得する方法
  36. Spawnしたインスタンスがイベントを実行する方法
  37. 特定の時間ごとに処理を実行する方法
  38. 数値をランダムで出力する方法
  39. ThirdPersonテンプレートでキャラクターの移動を歩くように変更する方法
  40. MaxWalkSpeedを変更する方法
  41. しゃがむ動作を導入する方法
  42. キャラクターのアニメーションを設定する方法
  43. 導入済みのプラグインを確認する方法
  44. Motion Matchingの導入と必要なプラグイン
  45. プレイヤーを非表示にする方法
  46. カメラを傾ける角度を制限させる方法
  47. 配列からランダムに重ならない要素を特定の数取得する方法
  48. カメラの映す画面に文字やエフェクトを付ける方法
  49. キャラクターやメッシュを非表示にした際にカメラが移動しなくなる問題の解決方法
  50. プライマリーデータアセットを活用する方法
  51. プレイヤーのHPといった変数を定義する最適な場所
  52. カメラに映った画面をスクリーンショットとして保存する方法
  53. ゲーム内のカメラ映像を保存して再表示する方法
  54. HighResShot を使って高解像度の画像を保存する方法(UE5)
  55. HighResShotで保存した画像のファイル名を取得する方法
  56. SceneCapture2DとFrameGrabberの画像保存方法の比較
  57. SceneCapture2Dを使用して画像を保存・取得する方法
  58. HighResShotとTake High Res Screenshotの違い
  59. ゲーム終了ボタンを作成する方法
  60. 「Save Game To Slot」の戻り値がfalseになる問題の解決方法
  61. 画面上にメッセージを指定された時間表示させる方法
  62. シェーダコンパイル時間を短縮する方法
  63. 「Take High Res Screenshot」実行時に「シェーダをコンパイル」に長時間待たされる問題とその解決策
  64. データベースを活用する方法
  65. UE5.5がインストールされた環境にUE5.4を追加で導入する方法
  66. World PartitionとWorld Compositionの違い
  67. オープンワールドテンプレートとは?
  68. ポーンをスポーンさせても視点を切り替えない方法
  69. キャラクター同士がすり抜けてしまう問題の解決方法
  70. キャラクターの外見を動的に変更
  71. World Partitionでインスタンスが「アンロード済み」になる問題
  72. データ アセットとデータ テーブルの違い
  73. コンポーネントイベントグラフ内で親クラスの変数にアクセスする方
  74. エディターのソースコードの自動保存の頻度を高める方法
  75. SpawnActorでSpawn Transform Rotationが反映されない理由
  76. ミニマップを表示しポーンの位置を反映する方法
  77. RInterp ToとVInterp Toの違い
  78. 毎秒実行するイベントの定義方法
  79. Niagara のエフェクトにコリジョンを持たせる方法
  80. 「Overlap」と「Hit」の違い
  81. OverlapはあるがHitがない原因
  82. Overlapした位置の座標を取得する方法
  83. ブループリントでレベル間のパラメータを受け渡す方法

最近更新/作成されたページ