キャラクター静止時に、動く壁をすり抜ける

質問者はゲーム作成初心者です。

Third Personテンプレートを使っています。

[こちらのサイト([UE4] スプライン上を動く足場の作り方|株式会社ヒストリア][1]を参考に、動く壁を作ったのですが、キャラクターが移動しているかどうかによって、以下のように動作します。

※壁がキャラクターに向かって迫ってきている状態です。

キャラクター移動時:壁にぶつかって押し戻される

288515-move.png

キャラクター静止時:壁をすり抜ける

288516-stop.png

常に、移動時のように、壁に押しのけられてほしいのですが、うまくいきません。

キャラクターの移動時にしか、キャラクターが他のアクターと重なっていないかの判定がされていないのだと思うのですが、対策の仕方が分かりません。

キャラクター静止時にも判定を行う方法、もしくは、他の方法があれば、壁に押しのけられる動作の実装方法を教えてください。
よろしくお願いします。

動く壁というのはAdd Actor Local OffsetもしくはSet Actor Locationで移動させていますか?もしそうであれば、Sweepのフラグにチェックをつけてみてください。

Set Actor Locationで移動させています。
Sweepフラグにチェックを付けたところ、キャラクターにぶつかって停止するようになりました。
しかし、希望しているのは、キャラクターを押しのけて壁が進み続ける動作ですので、少し違うんです…

まずはUnrealEngineにおいて「ぶつかる」という事象を感覚的に理解する必要があります

Collisionの検知ルールは基本的に「自分が」「相手に」ぶつかったかどうかです
逆はありません

そして、Collisionの判定結果は、「自分」に対してしか解決されません
この場合では、ぶつかった際に「自分」を押し戻すことはできますが、「相手」を押し出すことはできません

上記がわかりづらければ、チェスか将棋を思い浮かべてもらえばよいです
駒は一度に一つずつしか動かせず、移動先に別の駒があれば、動かすのを諦めるか相手の駒を取り除かねばなりません
駒で駒を弾き飛ばすことはできませんよね?

つまり、押し出す動作を実現するためには、相手に動いてもらう(移動先を譲ってもらう)必要があります

下記は、自分が動いた分だけ相手を押し出す動作を示したBPです
参考にしてみてください