BLOGブログ

2024.06.19UE5UE/ Blueprint

[UE5]OpenLevelのスタート地点を指定する

執筆バージョン: Unreal Engine 5.3

今回は、OpenLevelのスタート地点を任意に指定する方法について紹介したいと思います。

レベルのスタート地点を指定する場合PlayerStartActorを配置することでそこから、スタートすることができます。
ただし、PlayerStartActorを複数配置すると、標準では初めに検索された位置からスタートすることになります。


※たまたま、検索順が逆になって、スタート地点が別になることも、スタート地点は神(UnrealEngine)のみぞ知る…

これを回避して、任意のスタートするためにはGameModeBaseのFindPlayerStart、SpawnDefaultPawnFor
SpawnDefaultPawnAtTransform等をオーバーライドし機能を拡張することで任意の位置からスタートすることが可能です。

他のレベルから開くタイミングでスタート地点を指定する場合、
レベルを開くopenコマンドの?で追加したOptionsをキーとし、GameModeBaseクラスが持つ「OptionString」から移動先を検索してスタート地点を変えることができます。

コマンドのフォーマット

ブループリントで取得する方法

開始地点の検索にはPlayerStartActorのPlayerStartTag か ActorTagをキーとして検索することで実装可能です。

ですが、今回はあえて、これらの処理を変更しないで、UnrealEngineの標準機能でスタート地点を指定してみようと思います。

手順

1. PlayerStartActorを配置

2. PlayerStartActorのPlayerStartTagに検索用の文字を指定

3. OpenLevelのパラメータに#(開始地点のPlayerStartTag)を追加してレベルを開く

OpenLevelノードを利用する場合

この実装で指定したPlayerStartActorの位置からスタートすることができます。

なお、GameModeBaseクラスのFindPlayerStartの「Incoming Name」にもこの#で指定した文字列が入って来ます。 

最後に

今回、UnrealEngineの標準機能でスタート地点を選択する方法を紹介しました。
エンジンコードのFURL構造体を確認するとこの辺の実装が書いてますので参考にしてみては?
(Engineのソースコードを貼るのは避けますが、「?-〇〇〇〇」でOption打ち消せるようですよ。)