ゲームでカメラを扱う方法は多種多様で、制作するゲームの種類によって大きく異なります。 Unreal Engine では、カメラは通常、スプリングアーム コンポーネントを持つアクタと、ビューをレンダリングするカメラ コンポーネントで構成されます。 基本的なカメラの設定については、「カメラを使用する」を参照してください。
このドキュメントでは、デベロッパーが Parrot 向けにカメラを実装した経緯と、特に注目すべき設定について説明します。
Parrot カメラ サブシステム
まず、ワールド固有のカメラ設定を持つ可能性のある各マップが特定されています。
デベロッパーは、ワールドのライフタイムを共有し、BeginPlay 時にこれらの設定でカメラを初期化する UParrotCameraSubsystem を作成しました。 マップ固有の設定は AParrotWorldSettings に保存され、マップごとのデータを保存するのに便利です。 カメラの場合、これは必要なカメラ クラス、移動モード、そしてカメラがプレイヤーを追跡しないようにする Z 軸の上限/下限です。 クラス自体はオプションであり、指定しないことは有効な選択肢です。 これはメイン メニューで行います。
サブシステムを使用する理由については、「Parrot のサブシステム」のドキュメントを参照してください。
ワールド設定は、エディタの [World Settings (ワールド設定)] パネルにあります。
Parrot カメラ
AParrotCamera は、ロジックの大部分を処理する場所です。 サブシステムによってカメラが初期化される際、追従するプレイヤー、移動モード、そしてワールド設定から境界が提供されます。
カメラには、None (なし)、Fixed (固定)、Follow (フォロー) の 3 つの移動モードがあります。
None (なし) は文字どおりの意味です。 カメラは何もしません。
Fixed (固定) 移動モードはシンプルです。 プレイヤーが境界ボリュームに入ると、カメラ サブシステムによってカメラに固定位置が指定され、カメラはその位置に補間します。 その後、プレイヤーは移動モードが更新されるまで自由に移動できます。
Follow (フォロー) 移動モードは複雑で、「Content/Blueprints/BP_PlatformerCamera」を参照すると理解しやすくなります。 AParrotCamera には、移動トリガー ボックスとブロッキング メッシュがデフォルトのサブオブジェクトとして存在します。 つまり、AParrotCamera のすべてのインスタンスの階層に、これらが自動的に追加されます。 これらは、カメラのフラスタム、スプリング アーム、パースペクティブと位置合わせされ、目的の効果が得られます。 これらのコンポーネントは両方ともカメラ アクタにアタッチされ、ワールド内でカメラ アクタに追従します。
ブロッキング メッシュは、プレイヤーがワールド内でプレイヤーと衝突して後方に移動するのを防ぎます。
プレイヤーが移動トリガー ボックスに重なると、カメラは設定された速度でプレイヤーの X 座標値まで補間しようとします。 この速度は、トリガー ボリュームの左端を越えたプレイヤーの距離によって乗算されます。 これにより、プレイヤーがボリューム内に深く入れば入るほど、カメラは追いつくためにより速く移動します。
その結果、プレイヤーは画面左側のブロッキング メッシュまでは自由に移動できる一方で、しきい値を超過するとカメラもプレイヤーと一緒に移動します。 これにより、プレイヤーが X 軸に沿ってワールド内を移動する際に、美しいエフェクトが得られます。
フォロー移動モードのもう一つの注目すべき点は、プレイヤーの最後の既知の位置が追跡されることです。 プレイヤーの Z 軸がワールドの境界を超えた場合、またはプレイヤー キャラクターが破壊された場合、カメラをプレイヤーの最後の既知の位置に補間します。 これにより、プレイヤーの動きやステートによってカメラの動作が不自然になるのを防ぎます。
最後に、BP_PlatformerCamera のカメラ コンポーネント自体にも、注目すべき設定がいくつかあります。 投影モードはパースペクティブで、FOV が 90 度、アスペクト比が標準 HD の 1.77 です。 カメラ オプションでは、アプリケーションの実行解像度に関係なく、カメラが常に正しく表示されるようにアスペクト比を制限しています。