0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UE5 プレイヤーを動的にスポーンさせる

Last updated at Posted at 2025-01-18

概要

ゲーム開始後にプレイヤーを動的にスポーンさせてみる。

作業ログ的な記事なのでプレイヤーの作成等も含めているが、主題となるプレイヤーの動的生成部分だけ見る場合はここを参照

image.png

前回はゲーム開始後、レベル上にタイルを生成して並べるところまでを実装した。

今回の内容のプロジェクト一式

環境

UE 5.5.1

プレイヤーをポーンで作成 (BP_Player)

ブループリントクラスからポーンを選択。
名前: BP_Player

2025-01-17_22h25_05.png

メッシュを追加

表示出来たらなんでも良いのでスタティックメッシュにした。

SM_CapsuleKun.fbx

2025-01-17_23h51_29.png

FBX を UE のコンテンツブラウザへ D&D でインポート。

2025-01-17_23h59_25.png

UE は X軸が前方なので、インポート時の設定でオフセットのZ軸を -90 しておく。
他はデフォルトで良さそう。(前回のタイルでは忘れてた)

2025-01-18_02h20_25.png

色はマテリアルを開いて適当に変える。
フォルダ構成も少し整理。

アセットの移動をした後は右クリックから リダイレクタ参照を更新 すること。
更新をかけるのは上位階層のフォルダでも良いが、チームで開発している際に問題ないのかどうかは不明。
2025-01-18_00h13_36.png

スタティックメッシュコンポーネント追加

BP_Player を開きコンポーネントウィンドウで スタティックメッシュコンポーネント を追加。詳細ウィンドウでメッシュを SM_CapsuleKun に設定。

2025-01-18_01h05_42.png

スプリングアームコンポーネントを追加

カメラだけでも良い気がするけど、なんとなくスプリングアームの先にカメラを設置することにする。コンポーネントウィンドウで スプリングアーム コンポーネント を追加。

2025-01-18_02h04_18.png

詳細ウィンドウで回転を Y = -65、Target Arm Length を 900 にする。

2025-01-18_02h26_45.png

スポーン時にタイルと衝突してしまうとカメラがめり込んでしまうので、一旦カメラコリジョンの Do Collision Test は外しておく。

これ外すとますますスプリングアームの意味が無い気もするけどまぁとりあえずで。

2025-01-18_13h32_12.png

カメラコンポーネントを追加

SpringArm の子としてカメラコンポーネントを追加する。

2025-01-18_02h31_56.png

トランスフォームは全部初期値にする。

2025-01-18_02h32_46.png

コンパイルしてから BP_Player をシーン上へ適当に D&D するとこうなるはず。
※ 追加された BP_Player は要らないのでアウトライナーから消しておくこと。

2025-01-18_02h49_28.png

変数を追加

CurrentTile

後で必要になりそうなのでプレイヤーが現在居るタイルへの参照を保持しておく。
これはタイルへのスポーン時にセットする。(今回は使わないけど)

  • CurrentTile (BP_BoardTile)

詳細ウィンドウで インスタンス編集可能スポーン時に公開のチェックを入れておく。

2025-01-18_12h18_11.png

インスタンス編集可能 の状態は目玉アイコンと連動している。
目が開いているのがパブリック。

2025-01-18_12h11_43.png

例:こんな感じで SpawnActor した時に同時にセットできる。
2025-01-18_12h32_17.png

プレイヤーコントローラーを作成 (BP_PlayerController)

ブループリントクラスからプレイヤーコントローラーを選択。
名前: BP_PlayerController

2025-01-17_22h27_53.png

今回は用意しただけで実装は無し。

ゲームモード修正 (GM_TestGame)

前回作成済の GM_TestGame を修正し、タイルの生成後にプレイヤーをスポーンさせる。

関数を追加

SpawnPlayer

全体像。詳細はコメントの通りで。

2025-01-19_00h16_19.png

今回の主題の箇所

BP_Player (Pawn) を生成後、PlayerController に Pawn を Possess することで現在のプレイヤーを動的に差し替えることが出来る。カメラも BP_Player が持つカメラに切り替わるっぽい。

※ この後で説明するゲームモードの詳細設定変更も必要。

2025-01-19_01h49_03.png

SpawnActor の設定について

現状は生成場所にタイルと同じ座標を指定しているので、プレイヤー生成時にタイルと衝突するとで生成失敗する。
Collision Handling Override を Always Spawn, Ignore Collisions にしておく。

2025-01-19_00h17_14.png

生成失敗すると画面上では何も表示されないだけだが、出力ログを見ると下記の様なエラーが表示されている。

LogSpawn: Warning: SpawnActor failed because of collision at the spawn location [X=420.000 Y=210.000 Z=0.000] for [BP_Player_C]

イベントグラフ

BeginPlay でのタイル生成後に SpawnPlayer を呼び出す。

2025-01-18_23h58_56.png

ワールドセッティングのゲームモード詳細変更

ゲームモードオーバーライドは前回 BP_TestGame に設定済。

  • デフォルトのポーンクラス = なし
  • プレイヤーコントローラークラス = BP_PlayerController

2025-01-18_12h44_10.png

アウトライナーにある不要なオブジェクトを削除

PlayerStart はもう不要なので削除する。

2025-01-18_12h43_03.png

実行

image.png

おわり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?