UEの縁の下の力持ち的な機能 SpringArmについて

UE5の様なゲームエンジンでゲーム・ノンゲーム分野のコンテンツを開発する際には多くの場合は「何らかのオブジェクトやシーンをカメラで映す」という形で画面を構成します。

そのカメラの動作の補助に役立つ機能がSpringArmコンポーネントです。
SpringArmコンポーネントとカメラを組み合わせることで、「滑らかなカメラの動作」を簡単に実装することが出来ます。
一から処理を記述してそのような動作を作るよりも圧倒的に手軽に自然なカメラ動作を実装することが出来ますので、簡単に活用方法をご紹介します。

最も簡単な構成として、PawnのRootにSpringArmコンポーネントを配置し、その子階層にCameraを配置するという形があります。

この状態で何らかの入力に伴ってPawnの位置や角度を変更、もしくはSpringArmのローカル位置や回転を変更する処理を作成することで、SpringArmの子階層のCameraは「少しだけ遅れて滑らかに加減速しながら」追従することとなります。

以下はSpringArmコンポーネントの設定項目の簡単な解説となります。

位置の調整

Target Arm Length(ターゲットアームの長さ)

スプリングアームの基本となる長さです。この数値が対象(親)からカメラまでの基本距離になります。

Socket Offset(ソケットのオフセット)

アームの先端(カメラ側)の相対的なズレです。アームの長さはそのままに、カメラの位置を左右上下にずらすことができます。

Target Offset(ターゲットのオフセット)

アームの根本(親コンポーネント側)のズレです。キャラクターの足元に親ルートがある場合、Z軸をプラスして「頭の高さからアームを伸ばす」といった調整に使います。

衝突判定(Collision)
壁へのめり込み(クリッピング)を防ぐための設定です。

Do Collision Test(コリジョンテストを行う)

オン(デフォルト)にすると、カメラと親の間に障害物が入った際に自動でアームが縮みます。インスペクト画面や2Dゲームなどで、カメラと背景が干渉してガタガタする場合はオフにします。

Probe Size(プローブのサイズ)

カメラが壁にぶつかる判定に使う「見えない球体」の半径です。数値を大きくすると、壁からより離れた位置でカメラが止まるようになります(カメラが壁にめり込みがちな時に数値を上げます)。

Probe Channel(プローブチャンネル)

どのコリジョン(Collision)を「障害物」として認識するかを決定します。通常は Camera が設定されています。

遅延・滑らかな追従(Lag)
カメラが対象を追いかける際、あえて少し遅らせることで、手持ちカメラのような自然さや重量感を演出します。

Enable Camera Lag(カメララグを有効化)

位置(移動)の遅延をオンにします。

Camera Lag Speed(カメララグ速度)

遅延したカメラが、元の位置に追いつく速さです。数値が低いほどフワフワと遅れて追従し、数値が高いほどガッチリと吸い付きます。

Enable Camera Rotation Lag(カメラ回転ラグを有効化)

回転(振り向き)の遅延をオンにします。

Camera Rotation Lag Speed(カメラ回転ラグ速度)

回転が追いつく速さです。ロックオンカメラなどで機械的な動きを和らげるのに役立ちます。

回転の継承・制御(Rotation)

Inherit Pitch / Yaw / Roll(ピッチ/ヨー/ロールを継承)

親コンポーネントの回転(上下・左右・傾き)をスプリングアームに引き継ぐかどうかのチェックです。

必要に応じてパラメーターを調整することでより操作しやすいカメラ操作を実現することが出来ます。

エンジニアリング事業部からの最新情報をお届けします