🎮

【UE5】RootComponent以外のコリジョンを使う(回転したCapsuleComponentをコリジョンにしたい)

2023/02/09に公開

横向きのカプセルのコリジョンを持つPawnを作成しようとしてちょっと詰まったのでまとめます。

問題

普通にRootComponentにCapsuleCollisionを持たせると回転させることができません。

そこで今度はSceneComponentをRootにして、子階層にCapsuleComponentを持たせると、例えば重力を働かせたいときにCapsuleComponentの Simulate Physics をオンにすると、コンポーネントだけが落下してPawnの座標が更新されません。


Actorの位置にSphereをデバッグ表示しています。Actorは位置が変わらずコンポーネントだけ落下しています。

解決策

こちらを参考にしました。
https://forums.unrealengine.com/t/rotating-capsule-component-shape/297636

まずダミーとなる適当なコリジョンをRootComponentにしてできるだけ小さくします。

  • Add > BoxCollision でコリジョン作成
  • BoxCollisionをRootComponentにドラッグしてRootにする
  • サイズを小さい値にする(例 (1,1,1))
  • Simulate Physics をオンにする

そしてその子階層に実際に使う CapsuleCollisionを作成します。
回転やスケールも自由に設定します。


今度はActorの位置がコリジョンに追従しています。

まとめ

UEにおけるコリジョンと親子階層のまとめです

  • RootComponentの位置がActorの位置になる
    • Simulate Physics はRootComponentに設定する
  • 複数のコリジョンを使う時は、RootComponentに重力設定をして、その他のコリジョンは子階層に追加していけばOK

Discussion