4.

UE5のOn Component Begin Overlapとは|発火条件と使い方・取得できる情報

編集

On Component Begin Overlapは、あるコンポーネントが他のコンポーネント(やアクター)と重なり始めた瞬間に発火するブループリントのイベントです。プレイヤーがトリガーゾーンに踏み込んだ、アイテムにキャラクターが触れた、といった「接触の開始」を検知するための基本的な仕組みで、UE5でのインタラクション実装の入り口になります。このイベントは特定のコンポーネントに結び付いており、発火と同時に「誰が」「どのコンポーネントで」重なったかといった情報を受け取れるのが特徴です。

この記事の要点
  • On Component Begin Overlapは、特定のコンポーネントが他のものと重なり「始めた」瞬間に1回だけ呼ばれるイベントです。
  • 発火には、対象のコンポーネントでGenerate Overlap Eventsが有効で、かつ双方のコリジョン応答がOverlapになっている必要があります。
  • イベントからはOther Actor(相手のアクター)やOther Comp(相手のコンポーネント)などのピンが提供され、相手を特定して処理を分岐できます。
  • 重なりが「終わる」瞬間を取るには対になるOn Component End Overlapを使います。
  • アクター全体で受けるEvent ActorBeginOverlapとは、検知の単位(特定コンポーネントかアクター全体か)が異なります。

On Component Begin Overlapとは何か

On Component Begin Overlapは、コリジョンを持つコンポーネント(Box Collision、Sphere Collision、Static Mesh、Skeletal Meshなど)が、他のオブジェクトと重なり始めたタイミングで一度だけ呼び出されるイベントノードです。たとえば、ドアの手前に置いた見えない判定領域にプレイヤーが入った瞬間や、回転するコインにキャラクターが触れた瞬間を捉えられます。

重要なのは、このイベントがアクター全体ではなく「特定のコンポーネント」に紐付くという点です。コンポーネントを選択した状態でイベントを追加するため、1つのアクターに複数のコリジョンコンポーネントがある場合、それぞれに別々のOn Component Begin Overlapを用意して、コンポーネントごとに異なる反応をさせることができます。

名前が示すとおり「Begin(開始)」のイベントであり、重なっている間ずっと毎フレーム呼ばれ続けるわけではありません。重なり始めの1回だけ発火し、対象が範囲から出るときには別のイベント(後述のOn Component End Overlap)が呼ばれます。

イベントが発火する前提条件

On Component Begin Overlapは、ノードを置いただけでは反応しないことがあります。オーバーラップが検知されるには、コリジョンに関するいくつかの設定が揃っている必要があります。設定が一つでも欠けるとイベントが呼ばれないため、想定どおり動かないときはまずここを疑うのが定石です。

条件内容
Generate Overlap Eventsオーバーラップを発生させたいコンポーネント側でこの項目が有効になっている必要があります。一般に、関係する双方のコンポーネントで有効にしておくのが確実です。
コリジョン応答がOverlap双方のコリジョン設定で、対象となるオブジェクトタイプ同士の応答がOverlapになっている必要があります。BlockIgnoreではオーバーラップイベントは発生しません。
コリジョンが有効コンポーネントのCollision Enabledが、少なくともクエリ(Query)を含む設定になっている必要があります(例: Query Only や Collision Enabled)。No Collisionでは検知されません。

コリジョンの応答は、各コンポーネントのCollision Presets(コリジョンプリセット)でまとめて設定できます。用意されたプリセット(OverlapAll、OverlapAllDynamic、Triggerなど)を選ぶか、Customを選んでオブジェクトタイプごとに「Overlap / Block / Ignore」を個別に指定します。トリガーのように「ブロックはしないが重なりだけ検知したい」用途では、Overlap中心の設定にするのが一般的です。

イベントから取得できる情報(ピン)

On Component Begin Overlapノードには、発火時に出力される複数のピンがあります。これらを使うことで「何が重なったのか」を判断し、処理を分岐できます。

ピン名意味
Overlapped Componentこのイベントを受け取った側、つまり重なりを検知した自分自身のコンポーネントです。
Other Actor重なってきた相手のアクターです。プレイヤーかどうかの判定などで最もよく使われます。
Other Comp相手アクターの中で、実際に重なったコンポーネントです。同じアクターでも、どのコンポーネントが触れたかを区別したいときに使います。
Other Body Index相手側で重なった物理ボディのインデックスです。スケルタルメッシュなど複数ボディを持つ対象で意味を持ちます。
From Sweepこの重なりがスイープ(移動による掃引判定)に由来するかどうかを表すブール値です。
Sweep Resultスイープ由来の場合のヒット情報です。From Sweepが真のときに位置や法線などの詳細を含みます。

たとえばOther ActorCast Toノードに通せば、相手が特定のクラス(プレイヤーキャラクターや敵など)であるかを判定し、合致した場合のみ処理を続けるといった分岐が作れます。

On Component End Overlapとの対

On Component Begin Overlapは「重なり始め」のイベントであり、これと対になるのがOn Component End Overlapです。前者が範囲に入った瞬間、後者が範囲から出た瞬間に発火します。

この2つを組み合わせると、「範囲内にいる間だけ何かをオンにする」という状態管理が実現できます。たとえば、On Component Begin Overlapでヒント表示をオンにし、On Component End Overlapでオフにすれば、プレイヤーがエリアにいる間だけUIを出す、といった挙動になります。なお、End Overlap側にはSweep関連のピンはなく、相手の情報を表すピン(Other Actor、Other Compなど)が提供されます。

Event ActorBeginOverlapとの違い

UE5には似た名前のイベントとしてEvent ActorBeginOverlap(On Actor Begin Overlap)があり、混同しやすいポイントです。両者の主な違いは検知する単位にあります。

項目On Component Begin OverlapEvent ActorBeginOverlap
検知の単位特定のコンポーネント単位アクター全体(いずれかのコンポーネントが重なれば反応)
自分側の情報Overlapped Compとして、どのコンポーネントかが分かるどのコンポーネントで重なったかは直接は出力されない
取得できる相手情報Other Actorに加えてOther Compなども取得できる主にOther Actor(相手アクター)
向いている用途複数の判定コンポーネントを使い分けたい場合アクター単位で「何かが触れた」を大まかに扱いたい場合

一般に、これらは独立した別系統ではなく、コンポーネント側のオーバーラップが成立すると、それを含むアクター側のイベントも呼ばれる関係にあります。そのため、Event ActorBeginOverlapが反応しないときも、まずはコンポーネント側のコリジョン設定を確認するのが有効です。どのコンポーネントで触れたかを細かく区別したいならOn Component Begin Overlap、アクターとして触れられたことだけを大まかに扱いたいならEvent ActorBeginOverlap、と使い分けると整理しやすくなります。

使い方の例

例1: トリガーゾーンでメッセージを表示する

見えない判定領域にプレイヤーが入ったら通知する、というシンプルな例です。

  1. アクターにBox Collisionなどのコリジョンコンポーネントを追加し、判定したい範囲に合わせてサイズを調整します。
  2. そのコンポーネントのコリジョンプリセットを、プレイヤーとの応答がOverlapになるよう設定し、Generate Overlap Eventsを有効にします。
  3. コンポーネントを選択した状態でOn Component Begin Overlapイベントを追加します。
  4. Other ActorCast To(対象のキャラクタークラス)に接続し、相手がプレイヤーのときだけ後続を実行するようにします。
  5. キャスト成功側にPrint Stringなどを接続し、メッセージや任意の処理を実行します。

例2: アイテム取得

フィールドに置いたアイテムにプレイヤーが触れたら取得する、という流れもよく使われます。アイテム側のコリジョンコンポーネントにOn Component Begin Overlapを置き、Other Actorがプレイヤーであることを確認したうえで、所持数の加算やアイテムアクター自身のDestroy Actorを行います。重なりを取りこぼさないよう、コリジョン応答とGenerate Overlap Eventsの設定を忘れないことがポイントです。

よくある落とし穴

落とし穴対処
Generate Overlap Eventsを有効にし忘れる最も多い原因です。検知したいコンポーネントでこの項目を有効にします。相手側にも有効化が必要なケースがあるため、双方を確認します。
片側の設定だけ見ているオーバーラップは双方の設定で成立します。自分側がOverlapでも、相手側がIgnoreやBlockだと発火しません。両者のコリジョン応答を突き合わせて確認します。
応答がBlockになっているBlockは物理的に押し返す応答で、オーバーラップイベントとは別です。重なりを検知したい対象タイプの応答はOverlapに設定します。
相手を判別せず処理してしまう範囲には地面や他のオブジェクトも入り得ます。Other Actorを判定(Cast Toなど)して、意図した相手のときだけ処理するようにします。
自分自身のコンポーネントとの重なり同一アクター内の別コンポーネントと重なって反応することがあります。Other Actorが自分自身でないかをチェックして除外すると安全です。

よくある質問(FAQ)

Q. On Component Begin Overlapを置いたのに何も起きません。
A. まずGenerate Overlap Eventsが有効か、双方のコリジョン応答がOverlapになっているか、コリジョンがクエリを含む設定になっているかを確認してください。これらのいずれかが欠けていると発火しません。

Q. 重なっている間ずっと処理を続けたいのですが、このイベントで毎フレーム呼ばれますか。
A. いいえ。このイベントは重なり始めの1回だけ呼ばれます。継続的な処理が必要なら、Begin OverlapとEnd Overlapでフラグを切り替え、その間だけTickなどで処理する形にします。

Q. Other ActorとOther Compの違いは何ですか。
A. Other Actorは相手のアクター(オブジェクト全体)、Other Compはそのアクターの中で実際に重なった個々のコンポーネントを指します。相手の種類を判定するだけならOther Actor、同じアクター内のどの部位が触れたかを区別したい場合はOther Compを使います。

まとめ

On Component Begin Overlapは、特定のコンポーネントが他と重なり始めた瞬間を検知する、UE5のインタラクション実装の土台となるイベントです。発火にはGenerate Overlap Eventsの有効化と双方のコリジョン応答(Overlap)が前提となり、ここを外すと反応しません。Other ActorやOther Compといったピンで相手を特定し、On Component End Overlapと組み合わせれば「範囲内にいる間だけ」の状態管理も実現できます。アクター単位で扱うEvent ActorBeginOverlapとの違いも押さえておくと、目的に合ったイベントを選びやすくなります。仕様の細部はバージョンやプロジェクト設定によって挙動が変わる場合があるため、最終的な確認は公式ドキュメントや実機での検証をおすすめします。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Event BeginPlay
  2. Event ActorBeginOverlap
  3. Event Tick
  4. on component begin overlap
  5. On Component Hit
  6. CameraBoom(Spring Arm)
  7. Get Player Character
  8. Nav Mesh Bounds Volume
  9. AI MoveTo
  10. Pawn
  11. Create Render Target 2D
  12. Take High Res Screenshotノード
  13. Sphere Reflection Capture
  14. Event Tickノード
  15. ウィジェットのキャンバスパネル
  16. DefaultSceneRoot
  17. FloatingPawnMovement
  18. Set World Rotation
  19. Event Any Damage
  20. Set World Rotation
  21. VInterp To
  22. Get Socket Transform

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