Unreal Engine 5(UE5)で、キャラクターやメッシュを非表示にするとカメラが移動しなくなる問題が発生することがあります。特に、カメラをメッシュの子要素にしている場合にこの問題が顕著になります。本記事では、この問題の原因と解決方法について詳しく解説します。

問題の原因

UE5のキャラクターやメッシュを非表示にすると、メッシュの更新処理が停止するため、その子要素であるカメラの位置も固定されてしまいます。これにより、しゃがんだり移動してもカメラが動かなくなります。

解決方法1:Spring Armを利用する

カメラを直接メッシュの子要素にするのではなく、Spring Armコンポーネントを使用してカメラを制御することで、メッシュが非表示になってもカメラが正しく動作するようになります。

手順

1. キャラクターの「Camera」コンポーネントを削除し、「Spring Arm」コンポーネントを追加する。

2. 「Spring Arm」の子要素として「Camera」を追加する。

3. 「Spring Arm」の「Attach Parent」を「Capsule Component」に変更する(または「Root」に設定)。

4. 「Spring Arm」の「Inherit Pitch」「Inherit Yaw」「Inherit Roll」を必要に応じて調整する。

この方法により、メッシュが非表示になってもカメラの動作が維持されます。

解決方法2:カメラの親を変更する

カメラの親をキャラクターのルートコンポーネントに変更することで、メッシュが非表示になってもカメラの移動を維持できます。

手順

1. キャラクターの「Camera」コンポーネントを「Mesh」ではなく「Capsule Component」または「Root」にアタッチする。

2. Blueprintで「Set Owner No See」を使用して、メッシュのみを非表示にする(カプセルコンポーネントは表示されたままになる)。

解決方法3:Blueprintでカメラ位置を手動更新する

Blueprintを使ってカメラの位置を手動で更新することで、メッシュが非表示でもカメラの動作を維持できます。

手順

1. イベント「Tick」でカメラの位置をキャラクターの「Capsule Component」の位置に設定する。

2. 「Set World Location」ノードを使い、カメラの位置を強制的に更新する。

Blueprintの例:

Event Tick → Set World Location(Target: Camera, New Location: Get Actor Location)

まとめ

UE5でキャラクターやメッシュを非表示にすると、カメラの視点が固定されてしまう問題は、Spring Armを利用するカメラの親を変更するBlueprintで位置を手動更新するといった方法で解決できます。

プロジェクトの仕様に合わせて、最適な方法を選択してください。