【UE5】FindCollisionUVの使い方

プログラマーの尾関です。今回は衝突地点のUV座標を取得するのに役立つ「FindCollisionUV」ノードの使い方を解説します。

FindCollisionUVとは

FindCollisionUV関数は、衝突地点のUV座標を取得するために使用される機能です。

これによりマテリアルに特殊な効果を付与できます。

FindCollisionUVの概要

機能概要

  • 衝突地点のテクスチャUV座標を取得します
  • HitResult構造体とUVチャンネル番号を入力として受け取ります
  • 結果として、Vector2D(UV座標)とブール値(成功したかどうか)を返します

使用方法

初期状態では使えないため、プロジェクト設定で「Support UV From Hit Results」を有効にする必要があります

エンジン > 物理 > 最適化 > 検索結果のUVをサポート

この設定が有効でない場合、”Find Collision UV” 呼び出し時にエラーログが出力されます

  • LineTraceなどで得たHitResult構造体を入力として使用します
  • UVチャンネル番号(通常は0)を指定します

注意点

Information
  • トレース設定で`bTraceComplex = true`と`bReturnFaceIndex = true`を設定する必要があります
  • スタティックメッシュのコリジョン設定が「Simple and Complex」になっている必要があります
  • スケルタルメッシュでは機能しない可能性があります

    活用例

    • スプラッター効果の実装
    • テクスチャへの直接描画
    • 衝突位置に基づいたマテリアル調整

    FindCollisionUV関数は、衝突検出と組み合わせて使用することで、ゲーム内のインタラクティブな効果や視覚的なフィードバックを実現するのに役立ちます。

    Find Collision UVが正常に動作しない場合の対処法

    「Find Collision UV」の戻り値が「False」である場合、Find Collision UVは正常に動作していないこととなります。

    メッシュ (メッシュ側) の Collision Complexity を “Use Complex Collision As Simple” にする

    Collision Complexity はコリジョンの詳細度で、「Use Complex Collision As Simple」にします。

    これは、スタティックメッシュの形状をそのままコリジョンとして扱うための設定で、これにより “Find Collision UV” が正常に機能する場合があります。

    メッシュ (アクター側) の “Simulate Physics” を trueにする

    判定を行うメッシュの “Simulate Physics” を trueにする必要があります。

    Line Traceの “Complex Trace” を trueにする

    Line Trace” の HitResult を使用している場合、 “Trace Complex” (詳細な衝突検出をする) を ON にする必要があります。

    Hitイベントでは判定できないことがある

    Hitイベント” や “On Component Hit” といった衝突イベントの HitResult を使うと正常に動作しないことがあります。

    正常に判定できる場合もあるので、詳細は不明です。

    マテリアルにパラメータを設定する方法

    以下の記事を参考にマテリアルにパラメータを変更します。

    なお、Find Conllision UV の UV の値は 2次元ベクトルのため、そのままでは Set Vector Parameter Value に渡せません。

    そのため “Cast To Vector” で Vector型に変換してから渡します。

    Follow me!