この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:T
更新日時:2025-04-05 03:43:53

タイトル: Overlapは発生するがHitは発生しない原因
SEOタイトル: UE5で「Overlapは発生するがHitは発生しない」原因とは?

Unreal Engine 5(UE5)でのコリジョン判定において、「Overlapは正常に発生しているのに、Hitイベントが全く発生しない」という現象は多くの開発者が一度は直面する問題です。

この記事では、その原因と対策について詳しく解説していきます。

OverlapとHitの違いの復習

まずは基本をおさらいしておきましょう。

Overlapは物理的な衝突は発生せず、単に2つのコリジョンが重なったときに発生します。一方で、Hitは物理的な衝突・反応が発生する場面で発火します。

主な原因1:シミュレーションの有無

Hitイベントが発生するには、物理シミュレーションが有効になっている必要があります。静的なアクター同士や、物理挙動を持たないコンポーネント間では、そもそもHitイベントが発生しません。

例:

  • Static Mesh に「Simulate Physics」が無効 → Hit発生しない
  • Character Movementで動いているだけ → Overlapは発生するが、Hitはしない

主な原因2:コリジョンのプリセット設定

Collision Presetの設定がHitイベントの発生に大きく関係します。例えば、以下のような設定ではHitが無効化されている可能性があります。

  • Collision Enabledが「Query Only」になっている
  • Collision Responseが「Ignore」になっている
  • Object Typeが適切でない(例:WorldDynamicとWorldStaticの組み合わせ)

Hitを検出したい場合、Collision Enabledを"Query and Physics"にするのが基本です。

主な原因3:コンポーネントの選択ミス

HitイベントはPrimitiveComponent(例:StaticMeshComponent)のみにバインドされます。たとえば、ルートがSceneComponentになっている場合は、Hitイベントが機能しない可能性があります。

また、イベントをバインドする対象が実際に接触していないコンポーネントであれば当然イベントは発生しません。

主な原因4:動いていない

Hitは少なくともどちらかが「動いている」必要があります。つまり、静止している2つのアクターが接触してもHitは起きません

キャラクターの移動がNavMesh経由やSetActorLocationで行われている場合、HitではなくOverlapしか検出されないことがあります。

主な原因5:Generate Hit Eventsが無効

コンポーネントの詳細設定にある「Generate Hit Events」がオフになっていると、当然Hitイベントは発生しません。

これはStaticMeshComponent や CapsuleComponent に個別で設定されているため、使用している全てのコンポーネントを確認する必要があります。

主な原因6:Ignore by default

ObjectTypeの組み合わせによっては、デフォルトでHitイベントが無視されているケースがあります。たとえば、PawnとWorldStaticのようなペアでは、Hitが無視設定になっていることがあります。

このような場合は、カスタムのCollision Presetを作成して、明示的に「Block」に設定する必要があります。

対策まとめ

Hitが発生しないときは、以下の点をチェックしましょう:

  • Simulate Physicsがオンになっているか
  • Collision Enabledが"Query and Physics"になっているか
  • Generate Hit Eventsが有効か
  • コンポーネントのObjectTypeとCollision Responseの組み合わせが正しいか
  • イベントをバインドしているのが接触するコンポーネントか

最後に

OverlapとHitの違いを理解した上で、それぞれの挙動を引き出すためには、コリジョン設定の確認が不可欠です。

UE5は柔軟な分、設定のミスで意図したイベントが発生しないことも多くあります。この記事のチェックリストを活用して、確実にHitイベントを発生させましょう!