上昇下降する際、コリジョン(Block)が反映されない

確認ですが、CharacterMovementComponentの機能を使用して上昇下降していますか?

以前、link textで、キャラクターBPを使用して上昇下降する方法を教えていただきました。
問題なく動いてくれるのですが、正面や後方からオブジェクトやステージにぶつかった場合はブロックされるのですが、前後左右に動かずホバリングした状態から上昇や下降をすると、オブジェクトやステージを突き抜けてしまいます。
コリジョンは全てBlockにしています。プレイヤー側のコリジョンが小さすぎるのかと思って大きくしたりもしてみましたが解決されずで…
やりたいこととしては、ドローンのような動きをしたくて以前質問致しました。
何かわかる方いらっしゃいましたら教えていただけるとありがたいです。

はい、その通りです。movement modeをFlyingにして使用しています。

この問題は現在行っている移動方法によって対応が異なります

  • CharacterMovementの機能を使って移動している場合(AddMovementInputノードを利用)
  • Actorの位置を動かしている場合(AddActorWorldOffsetノードなどを利用)

一見似たような動きをしているように見えますが、処理の扱いが変わってきますので注意が必要です。


CharacterMovementの機能を使っている場合、CharacterのCollisionがきちんと考慮されるので、特に対応はせずとも問題なく動作するようになっています。
この場合で貫通するようであれば、Collisionの設定を見直すことになるでしょう。


AddActorWorldOffsetなどを利用して、Actorの移動先を直接指定している場合は対策が必要です。
移動が補完されているので連続的に移動しているように見えますが、実はその位置にショートテレポートしているような状態になります。

なので、Collisionを考慮する場合は、SweepフラグをONにする必要があります。
SweepフラグをONにすれば、移動中にCollisionを考慮する動きに変わります。


可能であれば、CharacterMovementの機能を使うほうが良いと考えます。

すみませんものすごいとんちんかんな回答しておりました…
お察しの通りAddActorWorldOffsetの方を使用しておりました!
AddMovementInputに変更したところきちんとブロックしてくれました。
丁寧な回答ありがとうございました。