Unreal Engine 5(UE5)で、マルチプレイヤーが同じ場所にスポーンする仕組みを作っていきます。
🔸 基礎編:1人でランダムにスポーンさせる
まずは「おひとり様」用の設定です。
- プレイヤーがゲーム開始時にどこからスポーンするかは、
PlayerStart
アクターによって決まります。 PlayerStart
は複数配置可能で、デフォルトではランダムに選ばれます。

これを利用するだけで、開始地点を毎回ランダムにできます。
🔸 マルチプレイでパーティ集合!
複数人で同じ場所にスポーンさせるには、独自のアクター( BP_Start
とします)を用意します。
✅ 手順:
- 空のブループリントアクター BP_Start を作成
- 可視化のためにスフィアなどを追加
PlayerStart
の代わりにBP_Start
をレベルに配置- ゲームモードの
ChoosePlayerStart
をオーバーライドして、BP_Start
の中からランダム抽選
この段階で、複数の BP_Start
からランダムに選ばれてスポーンするようになります。

ChoosePlayerStart
は PlayerStart の中からベストな開始地点を探す機能です。2人以上のときになるべく重ならないように選択するってのがメインの仕事みたいです。(それでも重なる選択がされることがありますね???)
🔸 同じ場所にスポーンさせたい!
ここからが本題です。
全員を「同じ場所」にスポーンさせたい場合、ランダムで選ばれた1つの場所を全員に共有すればOKです。

✅ ポイント
GameMode
にアクター型の変数を作成(例:SharedStart
)- 最初のプレイヤーのときだけランダム選出し、それ以降はその値を使いまわす
- 関数を呼ぶたびにランダム抽選されるのを防ぐため、関数の出力は変数に保存
- ブループリントの「実行ピンがない」関数に注意(毎回結果が違う)
🔸 同じ場所でかぶらないようにするには?
全員が全く同じ位置にスポーンすると、キャラが重なってしまいます。
なので、2人目以降は少しずらした場所に出す必要があります。
✅ やり方:
- 選ばれた
BP_Start
の位置を取得 - 右方向(RightVector)に100倍した値を加算し、位置をずらす
SetActorLocation
で位置を調整

最初の人はそのまま、2人目以降は1メートルずつ右にずらしていけば、綺麗に横一列に並びます!
⚠️ 注意点:アクターが動かせない問題
デフォルトでは一部のアクターは移動できない仕様になっています(Static
になっている)。
✅ 対応方法:
BP_Start
のルートをSphere
に変更して、Movable
に設定- これで
SetActorLocation
による位置調整が有効になります- ちなみに、PlayerStart内のカプセルはそこの設定を編集できません
🔸 陣形を組みたいなら?
全員が横一列じゃなく、特定の隊形(例えば三角形や円形)でスポーンしたい場合は:
- オフセットベクトルを配列に保存
- プレイヤー人数に応じて、順番に取り出す
- オフセットを加算してスポーン位置を計算
カウンタで管理して、ずれを適切に反映させるように注意しましょう!


前の人に対する移動量なので、最初の人+X100は前方、そこからY100は2番目の人の右、X-100は3番目の人の後方(最初の人の右横)で四角形の陣形になります。
まとめ
マルチプレイでの同時スポーンは、UE5の標準機能では不可能ですが、ゲームモードのカスタマイズとアクターをうまく使えば実現できます。
PlayerStart
の代わりに自作のBP_Start
- 最初に選ばれた位置を変数で保存
- 二人目以降は位置をずらして配置
ちょっとした工夫で、ゲームのクオリティがグッと上がりますよ!
コメント