関連ブログ
- [UE5]Modular Control Rigを使ってみよう 2024.11.27UE
- [UE5] Soundscapeプラグインを使ってみる 2024.11.13UE
- [UE5] Batch Renamerを使って一括でアセット名をリネームしよう! 2024.11.06UE
CATEGORY
2024.06.19UE5UE/ Blueprint
執筆バージョン: Unreal Engine 5.3
|
今回は、OpenLevelのスタート地点を任意に指定する方法について紹介したいと思います。
レベルのスタート地点を指定する場合PlayerStartActorを配置することでそこから、スタートすることができます。
ただし、PlayerStartActorを複数配置すると、標準では初めに検索された位置からスタートすることになります。
※たまたま、検索順が逆になって、スタート地点が別になることも、スタート地点は神(UnrealEngine)のみぞ知る…
これを回避して、任意のスタートするためにはGameModeBaseのFindPlayerStart、SpawnDefaultPawnFor
SpawnDefaultPawnAtTransform等をオーバーライドし機能を拡張することで任意の位置からスタートすることが可能です。
他のレベルから開くタイミングでスタート地点を指定する場合、
レベルを開くopenコマンドの?で追加したOptionsをキーとし、GameModeBaseクラスが持つ「OptionString」から移動先を検索してスタート地点を変えることができます。
コマンドのフォーマット
1 |
open レベル名?オプション |
ブループリントで取得する方法
開始地点の検索にはPlayerStartActorのPlayerStartTag か ActorTagをキーとして検索することで実装可能です。
ですが、今回はあえて、これらの処理を変更しないで、UnrealEngineの標準機能でスタート地点を指定してみようと思います。
OpenLevelノードを利用する場合
この実装で指定したPlayerStartActorの位置からスタートすることができます。
なお、GameModeBaseクラスのFindPlayerStartの「Incoming Name」にもこの#で指定した文字列が入って来ます。
今回、UnrealEngineの標準機能でスタート地点を選択する方法を紹介しました。
エンジンコードのFURL構造体を確認するとこの辺の実装が書いてますので参考にしてみては?
(Engineのソースコードを貼るのは避けますが、「?-〇〇〇〇」でOption打ち消せるようですよ。)