TPSにおけるカメラとキャラの回転(UE5)

※多分間違ってると思いますが、面倒なので断定口調で書きます
※個人用備忘録ですが、何かご指摘ございましたらコメント頂けたらと思います

ThirdPersonテンプレの移動とカメラ回転

ThirdPersonテンプレでは
キャラが手前を向いていても Wキー を押せば奥に行きますし
カメラを回転してもキャラは回転しません。なぜか?

ThirdPersonテンプレでは移動は キャラ(Pawn)からでは無く
Get Controll Rotation から方向を取得して移動しています。

カメラの回転も Controller に入力しています。

Controller というのは PlayerController、AIContoroller などのこと
Controllerクラスが Control Rotation を持っていて
ControlRotation = ビュー(SpringArm)の向き に設定されています

ここで ControlRotation が SpringArm の向きに設定されている

FPSなどであればカメラの方向とキャラの方向は一致してるので
ActorやPawnから方向を参照したり、回転させれば良いのですが
TPSでは「カメラとキャラの方向が一致してない」ので
キャラ(Pawn)と別に回転する物が必要になる
それが Control Rotation(ビューの向き)になる訳です。
 ※BP_ThirdPersonCharacter = Pawn

Pawnの向きと一致しないのは「カメラの回転と移動方向」なので
その2つは ControlRotation から持ってくるのです。
 ↓ のような構造になっています

Controller( Control Rotation )
 ↓(指令)
Pawn(Control Rotation の方向に移動)
 Sprin Arm(設定でControlRotationに回転値を渡している)
  Camera


カメラを回転できるようにする

CameraBoom(SpringArm)の回転値を ControlRotation に繋ぐか?という設定。※厳密に言うとSpringArmは回転しないが便宜上そう言っておく。

オンならば ControlRotation はカメラの向きと一致する双方向でやり取りが可能なので、Add Controller Yaw Input などに入力されればカメラ側の回転値も変化してカメラが回転する。

オフにすると Control Rotation とカメラの回転は一切関係なくなる
inherit Pitch などだけをオフにすると、その軸だけリンクが切れる


キャラがカメラの回転に同期

ThirdPersonBPの一番上(Self)つまりActorの設定
で Use Controller Rotation をオンするとキャラがカメラに同期します

これは、Controller の持つ ControlRotation(ビューの向き)を
キャラ(Pawn)も使うかどうかという設定

この設定がキャラ回転系で最も優先度が高く、他の設定を無視します。


移動方向にキャラを向かせる

Wキーを押すと「Pawnにとっての前方向」では無く「ビューにとっての前方向」に移動する理由は説明してきましたが、Pawnが「向き」まで揃ってる理由にはなりません。

その設定が Character Movement の Orient Rotation to Movement
これがオンだと加速度方向にPawnが向きます。

これはキャラ回転系では2番目に優先度が高く
Use Controller Rotation以外の設定を無視できます。

ちなみに CharacterMovement の設定は Self からでも見れます、オンオフも同期します。恐らくUEは子階層の設定は見れる仕様なのか。


キャラをカメラのYawのみに同期

ここをオンにしてるとYawのみ、カメラの向きにキャラが向きます。
Use Controller Desired Rotation

これが最も優先度が低く他の設定で上書きされてしまいます。


参考元



この記事が気に入ったらサポートをしてみませんか?