縮小するActorとCharacterとのHitについて

ActorとCharacterのHit判定について質問させてください。


やろうとしていること

  • イメージとしては流行のバトルロワイアル系FPSの安全エリアのようなシステム
  • 円筒状の安全エリアActorが縮小する
  • Characterは安全エリアの内側に配置され、安全エリアActorの壁にHitすると死亡

###安全エリアActor

  • 円筒状のStaticMeshを持つActor
  • StaticMeshは内側向きに法線を持つ
  • set Relative Scale 3DをTickで回してスケール(z,x)を縮小する。zは固定値
  • CollisionはStaticMeshを使用し、CollisionプリセットはBlockAllDynamic。
  • StaticMeshのCollision Complexityは「Use Complex Collision As Simple」
  • CharacterがHitするとDestoryイベントを発生させる

###Character

  • Characterを継承したキャラクター
  • 移動は「Add Movement Input」を使用
    ※「Add Actor Local Offset(sweep Enable)」でも同様の現象が起きた
  • CollisionはCapsuleCollisionコンポーネントを使用し、CollisionプリセットはPawn

問題事象

安全エリアActorが縮小する際、Characterが静止していると安全エリアと接触してもHit判定されない
※Characterが移動中であればHit判定される

252530-movie.gif

  1. 縮小中の安全エリアActorに向かってCharacterを移動すると当たる

  2. Characterを操作しない(静止する)と通り抜ける

※gif動画ではわかりやすいようDestory処理を外して、Print Stringしています。


ちなみに拡大する立方体のActorで実験してみても、Characterが静止状態のときはBlockされず立方体にめり込んでしまいました…。
よろしくお願い致します。

Hitの判定にはまず「Collision方向に押し込む」ベクトルが必要になります。
つまり動いていないものに対して衝突判定は発生しません。

この場合、どちらのActorも「動いていない」ので、衝突判定は発生しないことになります。

このユースケースの場合、Overlapで処理するほうが良いでしょう。

「動いていること」がもろHit判定の条件だったんですね…。

Overlapを使用する方法を試してみます。ありがとうございます。