カメラ移動にキャラクターが遅延追従する

キャラクターに対してカメラが遅延して追従する方法は
あスピード感を出すため、様々なゲームで用いられています。

カメラ移動に対してキャラクターが遅延して追従する方法は、
キャラクターの巨大さ・重さを表す際に使用されます。
有名ゲームで言うとMechWarriorなどで採用されています。

前置きはほどほどに、とりあえず作ってみました。

Third Person テンプレートを使用しており、UE4.25.4で実行しています。
ThirdPersonCharacterのブループリントに追加する形にしています。

マウスを速く左右に回した際において、
キャラクターが設定した旋回速度に応じて追従しています。

f:id:SasaYama:20201207001745p:plain


まず、この箇所でアクタの正面ベクトルと
コントローラ(ビュー)の正面ベクトルの外積を計算しています。
外積は2つのベクトルと垂直なベクトルとなります。

この時、回転方向によってベクトルの正負が決定されるため
回転方向別に考えなくていいです。

Z軸の回転のみなのは、簡単化のためです。


f:id:SasaYama:20201207001927p:plain


外積で出したベクトルを回転軸として RotateVectorAroundAxis によって回転させます。
この時の引数で回転速度を決定しています。

Base Turn Rate はThird Person テンプレートに元々入っている変数となります。
あとはGetWorldDeltaSecondsで1フレーム当たりの時間を取得し、
1フレームあたりの回転にしています。
確認はまだなのですが単位は Dec/frame だと思われます


f:id:SasaYama:20201207002548p:plain