Unreal Engine 5のVRテンプレートでは、テレポート移動が標準設定になっています。
ですが、他の移動方法を設定した後は、テレポート移動が必要なくなる可能性が高いです。
そこで、入力アクション「IA_Teleport」を利用し、視点の高さ変更を行うようにする方法を示します。
実装の考え方
デフォルトのIA_Teleportは、右サムスティックのY軸のAxis 1D (float)を移動処理に紐づけています。
このfloatをそのまま利用して、VROriginのZ座標を変更するようにします。
編集する場所
BP_XRPawnのイベントグラフのみを編集します。
作成する変数
新しく3つ変数を作成します。
- Speed
Float型の変数。
Z座標の変更スピードを設定する。 - VROriginRelativeLocationDefault
Vector型の変数。
CapsuleComponentとの相対座標のデフォルトを設定する。 - VROriginAdjusted
Boolean型の変数。
デフォルトはFalseにしておき、
視点の調節が終わった際にTrueになるようノードを組む。
動作の実装
IA_Teleportのノードを下記のように変更します。

動作
- トリガー中は、調整可能状態の場合、ActionValue(float)×Speedの分だけVROriginのCapsuleComponentとの相対座標を変更する。
- VROriginのCapsuleComponentとのZ軸の相対座標の絶対値が200を超えた場合、
VROriginのCapsuleComponentとの相対座標をデフォルトに戻す。
そこで一旦調整不可能状態にする。 - 操作が完了したら、調整可能状態に戻す。
TargetはVROrigin
視点の高さを変更する対象はVROriginにしておきます。
VROriginはCameraを含むコンポーネントのため、
ここを動かすことで視点の高さ変更が可能になります。
VROriginでなくてもいいかもしれないです。
まとめ
UE5のVRテンプレートはそのままでも便利ですが、
用途によっては移動方法を変更することで操作性が向上します。
今回は、IA_Teleportの入力でVROriginの高さを変更するよう、
BP_XRPawnのブループリントを編集しました。