この記事は
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を使用してプレイヤーの周囲をぐるぐる移動させる様子です。
自分で実装した部分は、プレイヤー周辺を移動する処理のみとなります。
ブログ用 pic.twitter.com/Wf7cIxceld
— goolee (@goolee07) 2023年5月31日
アクター以外を注目したい場合
AAIController::SetFocalPoint の処理があり、特定アクターではなく、
特定座標へ注目させることもできます。
まとめ
SetFocusはAIControllerが特定のアクターや座標に注意を向けるための便利な処理です。
簡単な使い方と流れをまとめました。
不明な点や間違ってる点などありましたら、連絡をいただければ幸いです。
明日は mokoさんの UE5 エミッシブの値を露出に関わらず一定に保つ です。 お楽しみに!