blog heroalche.studio

ゲーム開始時にスポーンするCharacterを呼び分ける

著者:

Nobuyoshi Daido

投稿日 2024.04.01更新日 2024.04.01

はじめに

ゲーム開始時にスポーンする Character クラスなどを呼び分ける実装を紹介します。 Alche の公式Xで以前紹介した内容をベースに、発展的な関数の紹介なども行っていきます。

環境は UE5.3 の Third Person Template を使用します。

解説

Character を呼び分けるため、以下のように Character を2体用意しました。 SpawnChara 0

そして GameMode の Default Pawn Class には BP_Manny_Red を指定しておきます。 これで実行するとご存知のように BP_Manny_Red が操作キャラクターとしてスポーンされます。 SpawnChara 1

これを Default Pawn Class は BP_Manny_Red のままで BP_Quinn_Blue にオーバーライドする実装をしていきます。 GameMode を開き、MyBlueprint の FUNCTIONS から Get Default Pawn Class for Controller をクリックして開きます。 SpawnChara 2

この関数は Default Pawn Class を取得する関数です。この関数の Return Value に好きな Pawn クラスを指定することによって Default Pawn Class として利用され、操作キャラクターのオーバーライドが可能です。 SpawnChara 3

BP_Quinn_Blue にオーバーライドする実装をしてみました。Parent の呼び出しは不要なので削除しています。 SpawnChara 4 これで実行をしてみます。画像が小さくて申し訳ないですが、Default Pawn Class が BP_Manny_Red に設定されているのに対して、BP_Quinn_Blue にオーバーライドしてスポーンさせることができました。 SpawnChara 5

今回は、スポーンするPawnのクラスをオーバーライドしただけでしたが、特定の条件によって分岐させる処理をGet Default Pawn Class for Controller内に記載することにより、スポーンするキャラクターを呼び分けることができます。

スポーン位置もオーバーライドしたい

上記で紹介した関数と類似のもので、 Spawn Default Pawn for と Spawn Default Pawn at Transform が存在します。どちらも操作キャラクターのオーバーライドが可能ですが、こちらのふたつの関数はスポーン位置のオーバーライドも行うことができます。 SpannChara 6

Spawn Default Pawn for

こちらは、PlayerController 型の引数である NewPlayer と Actor 型の引数である StartSpot を受け取ります。StartSpot には、PlayerStart がレベル内に存在していたらその参照が入ってきます。

Get Default Pawn Class for Controllerではスポーンしたい Pawn のクラスを返すだけでしたが、この関数のオーバーライドの際は、Spawn Actor ノードを利用して実際に Pawn をスポーンするところまで行います。この Spawn Actor ノードの Spawn Transform 引数において、好きなスポーン位置を指定することができます。関数の引数である StartSpot の Transform を利用しないでスポーンすることにより、Transform のオーバーライドも行える、ということです。

ReturnValue には、Spawn する Pawn のアクタ参照を返します。

imagecharaspawn

Spawn Default Pawn at Transform

こちらはスポーン位置の情報となる引数が Transform 型の Spawn Transform になっていますが、オーバーライドの仕方は先程と同様です。自身で指定した Pawn のクラス及び Transform を用いて SpawnActor ノードを発火させ、スポーンした Pawn の参照を戻り値として返します。 imagecharaspawn_1

おわりに

ゲーム開始前にキャラクター選択などでプレイヤーが選択したキャラクターを動的に設定してスポーンさせたいような場面などあると思います。そのような場面などで利用できるかもしれません。

ここまで読んでいただきありがとうございました。