SetFocus 〜あなただけ見つめてる〜

この記事は Unreal Engine (UE) - Qiita Advent Calendar 2023 - Qiita
シリーズ3の13日目の投稿記事です。

検証時のバージョン: UE5.2.0


はじめに

今まで敵キャラクターがプレイヤーに体を向けて周囲をぐるぐる移動する処理を作る際、
向きを合わせるという処理を、ビヘイビアツリーのサービスを作成し、
角度計算と向きの設定を行う処理を記述していました。
UE5のゲームサンプルであるLyraStarterGameを見ていると、 サービス内にそのような処理を記述せずとも、AIControllerのSetFocusという処理を用いることで
同様のことができることがわかりました。
今回はSetFocusの概要と使い方についてまとめてみました。

SetFocusとは


SetFocusはAIControllerが特定のアクターに注意を向けるための処理です。
使い方は簡単で、引数のNewFocusに注意を向けたいアクターを指定するだけです。

処理の流れ

設定したアクターの情報は、AAIController::UpdateControlRotation内で利用されます。
この処理では、AIControllerが操作しているポーンから対象への角度計算が行われ、
操作しているポーンのAPawn::FaceRotationに渡すことで、向きを設定します。
※ポーンのUseControllerRotationYawに
 チェックを入れていないと、向きの設定は反映されません。

プレイヤーを対象とした例

以下の動画は、SetFocusを使用してプレイヤーの周囲をぐるぐる移動させる様子です。
自分で実装した部分は、プレイヤー周辺を移動する処理のみとなります。

アクター以外を注目したい場合


AAIController::SetFocalPoint の処理があり、特定アクターではなく、
特定座標へ注目させることもできます。

まとめ

SetFocusはAIControllerが特定のアクターや座標に注意を向けるための便利な処理です。
簡単な使い方と流れをまとめました。
不明な点や間違ってる点などありましたら、連絡をいただければ幸いです。
明日は mokoさんの UE5 エミッシブの値を露出に関わらず一定に保つ です。 お楽しみに!