【UE5】いっしょにスポーン!マルチプレイで同じ場所にランダムスポーンさせる方法

※本サイトはアフィリエイト広告を利用しています。

Unreal Engine 5(UE5)で、マルチプレイヤーが同じ場所にスポーンする仕組みを作っていきます。

前回記事はこちら

🔸 基礎編:1人でランダムにスポーンさせる

まずは「おひとり様」用の設定です。

  • プレイヤーがゲーム開始時にどこからスポーンするかは、PlayerStart アクターによって決まります。
  • PlayerStart は複数配置可能で、デフォルトではランダムに選ばれます。

これを利用するだけで、開始地点を毎回ランダムにできます。


🔸 マルチプレイでパーティ集合!

複数人で同じ場所にスポーンさせるには、独自のアクター( BP_Start とします)を用意します。

✅ 手順:

  1. 空のブループリントアクター BP_Start を作成
  2. 可視化のためにスフィアなどを追加
  3. PlayerStart の代わりに BP_Start をレベルに配置
  4. ゲームモードの 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
  • 最初に選ばれた位置を変数で保存
  • 二人目以降は位置をずらして配置

ちょっとした工夫で、ゲームのクオリティがグッと上がりますよ!

コメント

タイトルとURLをコピーしました