トレースがヒットしない件

初投稿になります。銃の実装を試みているのですが、以下の画像のようにノード組んで壁にトレースを発射すると、ヒットするトレースもあるのですが、半分以上ヒットしてくれません。理由がわかる方がおりましたらご教示いただけますと幸いです。
(画像1)


(画像2)

1 Like

こんにちは、フォーラムへようこそ @rsakon

方言で申し訳ありません。私は日本語を母国語とはしていませんが、できる限りのお手伝いをさせていただきます。

発砲するものすべてが衝突設定で可視性チャネルをブロックしていることを確認しましたか?

場所のデバッグ ラインをオンにし、火災のデバッグ ラインをオフにしてみてください。その人は同じように振る舞っていますか?

2 Likes

横から失礼します。 @Mind-Brain さんが母国語では無いと言う事でもしかしたら理解し辛い部分もあるかもしれないので @Mind-Brain さんには失礼ながら勝手に少し補足します。

Line Trace By ChannelのDraw Debug TypeをNoneから別のものに変更し(デバッグが表示される長さの選択)、トレースが意図した通り動作しているかどうか確認してください。

順序としては @Mind-Brain さんが仰るようにまずはEnchancedInputAction IA_Fire(以下Fire)側のものだけ行い。それが意図したものでないのならば次にTargetLocation側の中身を確認。

TargetLocationから意図したものではないか、Fireのみが意図したものでないか等でどこに問題があるかが絞り込めると思います。

3 Likes

お二方ご回答いただきまして、ありがとうございます。
記載し忘れておりましたがトレースのヒット確認は既に行っており、関数Target Locationのトレースはちゃんと全弾ヒットしておりましたが、Fire側は半分以上ヒットしていません。これは海外の方の動画を見て作成したのですが、カメラと銃口のトレースだけだと壁にヒットした際に画面中央のクロスヘアよりズレてしまうのでTarget Locationでヒットした箇所に弾が飛ぶようにしているようです。

1 Like

見た感じ、おそらく「壁に当たる距離」ちょうどまでしかTraceを伸ばしていないからかな、と思います
確実に壁に当てたいのであれば、TargetLocationで検知した壁の位置よりもう少し先まで伸ばす必要があります

1 Like

@T_Sumisakiさんご回答いただき、ありがとうございます。
よろしければ、トレースをヒットした方向に少し伸ばす方法をご教示いただけないでしょうか。
よろしくお願い致します。

1 Like

MuzzleLocationからHitLocationへの方向(UnitVector)を計算し、Hitしなかったときと同様に距離を伸ばせば良いです

方向は減算からのNormalize、FindLookAtRotationからのGetForwardVectorのどちらでも可です

1 Like

解決方法をご教示いただき、ありがとうございます。
NormalizeやFindLookAtRotationやGetForwardVectorを使ったのですが、照準の位置から左にズレてしまいうまくいきませんでした。以下画像のようにHitLocationからMuzzleLocationを減算し距離を伸ばしたらところトレースがすべてヒットするようになりました。ただ、壁のギリギリ上を狙ってトレースがヒットしなかった場合、マズルからのトレースが壁にヒットしてしまうので、ヒットしなかった場合の処理も修正しようと思います。ベクトルの勉強不足で申し訳ございません。

1 Like