弾が壁を通り抜けてしまう

度重なる質問失礼します。

シューティングゲームを作っているのですが、発射した弾が壁を貫通してしまいます。

コリジョンの設定が適切でないのだろうということまではわかるのですが、実際にどう設定をすれば壁を貫通しなくなるのかがわかりません。

画像は弾のコリジョン設定、壁のコリジョン設定は画像の「オーバーラップイベントを発生」のチェックを外したのみで他の設定は同じになっています。

どなたかお詳しい方、ご教授お願い致します。

114232-キャプチャ.png

追記:弾のコリジョンのみAllBlockDynamicにしてみたところ、壁に当たった瞬間一瞬弾が止まるような動作をしたあとそのまま進んでしまいます。恐らくコリジョン判定自体は為されているのだと思いますが、通り抜けないようにするにはどうすればいいのでしょうか・・・。

画像の部分の設定以外ですり抜けの原因になりそうなのは

  1. 3Dの見た目の形とコリジョンの形が違う
  2. 弾の移動方法がコリジョン無視の方法になってる
  3. コリジョンを付けたコンポーネントがルートじゃない

1はコリジョン設定を有効にするコンポーネントが違う場合もあります。
2はProjectileMovementを使ってるなら問題ないはずです。

トラブルが起きやすいのは3で、アクターに含まれるコンポーネントのうち、一番親のコリジョン以外はちょっと変な挙動をして、すり抜けもよく起こります。
ルートが"DefaultSceneRoot"になってる場合は、弾のコンポーネントをそこにドラッグすると、弾がルートになります。

http://imoue.hatenablog.com/entry/2016/03/11/213645

↑はその問題について以前書いた記事なので、よろしければこちらも参考にして下さい。

1 Like

ご教授ありがとうございます。
初歩的な質問で申し訳ないのですが、この場合壁側のオブジェクトはBP化してコリジョンコンポーネントを追加する必要はあるのでしょうか?
そのようにせずともプレイヤーがすり抜けるといったバグは起きていないので問題ないかと思っていたのですが、その前提が間違っていたら…と思いお尋ねさせていただきました。

ご教授いただいた事項につきましては、帰宅し作業のできる状態になり次第確認させていただこうと思います。有難うございます。

今はBSPブラシで壁を作ってある状態でしょうか?
その場合はコリジョン設定が弾をOverlapせず、Blockするタイプになってればいいので、BP化する必要はないです

ご教授いただいた通りコリジョンをルートにしたところ、正常に動作するようになりました。本当に有難うございました!