トレースが2回ヒットしてしまう件

「Multi Line Trace For Objects」を使用して、壁の後ろにいる敵に銃弾をヒットさせる処理を作成したのですが、位置によってトレースが敵に2回当たってしまうことがあります。壁などには2回当たることがなく、カプセルコンポーネントにはヒットしないようにしております。理由がわかる方がおりましたらご教示いただけますと幸いです。

メッシュの衝突の設定方法によっては、これが発生する可能性があります。 これを解決するには、イベントまたは関数を 1 回だけ実行する Do Once ノードを使用できます。 プレイヤーがキャラクターに複数回射撃できるようにする必要がある場合は、Do Once 機能をリセットする必要があります。

ご回答ありがとうございます。画像を添付し忘れておりましたので添付いたします。手順はヒットしたオブジェクトをループしてPhysicalMaterialを取得、貫通できないオブジェクトであればそこでループを終了させています。トレースはヒットした位置よりさらに5m伸ばして、貫通する距離としています。Do Onceノードを入れる位置がわからないので教えていただけますでしょうか。よろしくお願いいたします。

ああなるほど! ループを中断したり、その機能を公開したりして、ループ プロセス内に Do Once を追加することができます。 ただし、根本的な原因を見つけたほうが良いでしょう。

おそらく、メッシュに複数の要素または個別の衝突があり、これが原因でこの問題が発生します。 メッシュの画像をアップロードしていただけますか?

ご返信ありがとうございます。メッシュは[SKM_Manny]をそのまま使用しております。

うーん、わかりました…その場合はわかりません。 デフォルトのメッシュにはそれほど問題はないはずです :confused:

胸にあたった判定の後、腕に当たって2HITの判定になってるとかなんですかね…?
処理の再現をしていないので適切な回答とはならないかもしれませんが。

何かに命中した場合に配列にAddしておき、同じActorが選ばれていた場合Findで見つかるため
ダメージ処理をスキップするという方法もあります。

応急処置のようなものですが効果はあるかと。

ご返信ありがとうございます。トレースのヒットを見ると胸の部分だけで3回当たっていたりしたので原因がわかりませんでした。ご教示いただいた配列に加える方法がわかりませんでしたので、ヒットしたアクターを一度変数に格納し、前回と同じアクターでなければダメージ処理を行いループが完了したら変数を空にする方法を行ったところ改善することができました。原因については引き続き考えてみようかと思います。ありがとうございました。

もしかしてSkeletalMeshに対してMultiLineTraceをしている、ということでしょうか?
その場合は、経路上のすべてのRigidBody(PhysicsAssetの各Body)を検知します
(当たった位置に相当するBoneの名前がHitResultに格納されます)

敵毎に1回としたいなら、何らかの方法で1回のみ検知するようにフィルターする必要があります

ご返信ありがとうございます。たしかに複数のボーン名が取得されておりました。解決方法を探したのですが見つからなかったので、ひとまずHit Actorを変数に格納する方法で行いたいと思います。ありがとうございました。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.