single.php

Unreal Engineでスムーズにキャラクター視点を変更する方法

ゲーム開発を試してみようと思い立ち、Unreal Engine 5をインストールして開発する過程で調べてみた部分を備忘録的に投稿します。今回はSpring Armを使って視点変更をスムーズに切り替える実装方法です。

CameraComponentによるキャラクターの視点変更についての実装方法については、別記事をご覧ください。

https://blog.janjan.net/2024/03/06/unreal-engine-point-of-view-player-character/

スムーズな視点変更

先回のフォローカメラの位置を変更してキャラクターの視点変更を実装した場合、キーを押した瞬間に視点切替が行われます。

今回は、アクションゲームで実装されている視点変更する位置までスムーズにアニメーションされるように改良していきます。

Spring Armを使って視点変更

原理的にはこんな感じです。

プレイヤーキャラクターの「FollowCamera」に追加されている「CameraBoom(Spring Arm)」の位置と回転を変更します。

[Spring Arm]にはカメラの移動を意図的に遅らせる[ラグ]設定があるため、今回はこの設定を利用して視点移動にアニメーションのような挙動を取り入れていきます。

視点変更後の位置を特定

カメラを利用した場合の時と同様に、視点移動させる位置を決めます。

具体的には次の手順で行います。

1. [BP_ThirdPersonCharacter]を開いて[コンポーネント]画面の[CameraBoom]を選択します。

2.[詳細]画面の[トランスフォーム]の[位置]と[回転]を変更します。

3. ゲームを開始して表示される視点を確認しながら視点変更した後の[位置]と[回転]の値をメモしておきます。

4.[詳細]画面の[トランスフォーム]の[位置]と[回転]の値を元に戻します。

ここまでの作業を保存します。

視点変更するイベントを追加

今回はキーボードのキーを押している間、キャラクターの視点変更をするようなイベントを追加していきます

具体的には次の手順で行います。(詳しい操作方法は、先回の記事を参照してください)

1. [BP_ThirdPersonCharacter]を開いて[イベントグラフ]にキーボードの[B]キーのイベントノードを追加して実行ピンに[Set Relative Location And Rotation]ノードを追加して、メモした視点変更後の[位置]と[回転]の値を[New Location]と[New Rotation]にそれぞれ入力します。

2.[Set Relative Locaton And Rotation]ノードの実行ピンから[Set Orient To Movement]と[Set Use Controller Rotation Yaw]ノードを接続して、下のイメージのように設定します。

3. キーを離した際のイベント[Released]ピンに[Set Relative Location And Rotation]ノードを追加して[New Location]と[New Rotation]の値をすべて “0.0” に設定します。

4.[Set Relative Locaton And Rotation]ノードの実行ピンから[Set Orient To Movement]と[Set Use Controller Rotation Yaw]ノードを接続して、下のイメージのように設定します。

ここまでの作業で[Spring Arm]の位置と回転を変更することで、キャラクターの視点が変更されるようになります。

[ラグ]設定でスムーズに視点移動させる

最後にカメラをスムーズにアニメーションさせるように[ラグ]を設定します。

具体的には次の手順で行います。

1.[BP_ThirdPersonCharacter]を開いて[ビューポート]の[詳細]画面で[カメラセッティング]の[Inherit Yaw]のチェックを入れます。(Cameraの[Yaw]設定が継承されるようになります)

2.[ラグ]設定の[Enable Camera Lag]と[Enable Camera Rotation Lag]のチェックを付けます。

ここまでの作業で、Spring Armの位置変更が瞬時に行われることなく少し遅れて移動するようになります。

ウィジェット画面のテスト

すべてのブループリントをコンパイルして保存したら、3Dキャラの視点がスムーズに移動されるかテストします。

キーボードの[B]キーを押すと、キャラクターの視点がアニメーションのように移動します。

また、キーを離した場合も元の視点までアニメーションのように移動します。

まとめ

今回は、Unreal Engineのプレイヤーの視点移動をスムーズに行う実装方法について書きました。

[Camera]コンポーネントを直接移動させずに[SpringArm]コンポーネントを移動させ[ラグ]設定を有効にすることでアニメーションのような視点変更が可能になりました。

Unreal Engineのゲーム開発でスムーズな視点変更の実装について知りたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です