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

タイトル: Overlapした位置の座標を取得する方法
SEOタイトル: UE5でOverlapした位置の座標を取得する方法

Unreal Engine 5(UE5)でアクターやコンポーネント同士が接触(Overlap)した際、その接触した地点の座標を取得したい場面は多々あります。例えば、エフェクトを出す場所を正確にしたい、UIに重なった位置を示したい、またはロジックに反映させたいといった場合です。

しかし、Overlapイベントでは、Hitイベントのように明確な衝突点(Impact Point)が提供されないため、別のアプローチが必要です。本記事では、その解決方法について詳しく解説します。

Overlapイベントでは位置情報が含まれない?

Blueprintの「OnComponentBeginOverlap」や「OnActorBeginOverlap」では、イベントの出力ピンには他のアクターやコンポーネントの情報は含まれていますが、Overlapした正確なワールド座標は含まれていません。

そのため、以下のような工夫が必要になります。

方法1:自分と相手の位置の中間点を使う

最もシンプルな方法は、自アクターの座標と相手アクターの座標の平均を使うことです。

Blueprintでは以下のように実装できます:

  • 「OnComponentBeginOverlap」イベントを使用
  • 「GetWorldLocation」で自分と相手の位置を取得
  • 「(A + B) / 2」で中間点を計算

この方法は簡単ですが、精度に限界があります。特にコンポーネントサイズが大きい場合、中心点が実際の接触点とは異なることがあります。

方法2:カスタムでTraceを使って補完する

Overlap直後に、Line Traceを使って接触点を推定する方法です。

例えば、Overlapイベントで相手のアクターが取得できたら、以下のような処理を行います:

  • 自分の位置から相手の位置へLine Traceを実行
  • 最初にHitした位置を取得

この方法により、物理的な接触点により近い座標を取得できます。

方法3:Overlapの範囲内で最も近い点を算出する

Overlap対象が複数ある場合、単純な中間点ではなく、「Closest Point on Collision」関数を利用する方法もあります。

これは、対象のPrimitiveComponentに対して使用でき、任意の座標に最も近いサーフェス上の点を返します。

手順:

  • 「Get Closest Point on Collision」ノードを使用
  • Targetに相手のコリジョンコンポーネント
  • Locationには自分の座標
  • 出力のLocationが接触点に近い推定位置

方法4:OverlapコンポーネントにSocketを使う

もし接触位置がある程度固定されている場合は、Socket(ソケット)やScene Componentを使ってOverlap位置の目安を事前に仕込むことも可能です。

接触時に「GetSocketLocation」などを使えば、決まった接触座標を再現できます。これは主に仕掛けやパズル系ゲームで使われる方法です。

補足:複数コンポーネントとのOverlapがある場合

Overlap対象が複数存在する可能性がある場合は、For Each Loopを使って、それぞれの相手コンポーネントとの位置を計算・記録しておくと良いでしょう。

また、Overlap中に随時位置情報が変わる場合は、「OnComponentBeginOverlap」だけでなく、「Tick」内での更新も検討するとより正確です。

まとめ

UE5ではOverlapイベント単体では正確な座標情報を得ることはできませんが、中間点の計算Line TraceClosest Pointなどの手法を組み合わせることで、実用的な位置取得が可能になります。

目的や精度、パフォーマンス要件に応じて最適な方法を選び、Overlapイベントをより賢く活用していきましょう。