creatorue
(creatorue)
1
4人まで参加可能なローカルマルチプレイのレースゲームを作っています。その際にカービーのエアライドやスマブラのような、プレイヤーがゲームに参加し、どのキャラクターや乗り物を使うかを選択する画面が必要です。
その際にいろいろと分からないことがあり困っているので、質問させていただきます。
まず、画面の分割についてです。
UE4のプロジェクト設定のMap&ModeのところでSplit Screenのオンオフを切り替えることができるのは存じております。しかし、あるレベルでは画面を分割せず、次のレベルに移ったら画面を分割するというようなスクリプトの組み方が分かりません。
これができれば、レースを始める前のメニュー画面や乗り物の選択画面はすべてのプレイヤーが画面を共有し、レース中はそれぞれの分割された画面でプレイするというようなことができます。
二つ目の疑問は、それぞれのプレイヤーが参加不参加を決めたとして、そのプレイヤーコントローラーのみを次のレースをするレベルに出現させる方法が分からないです。
例えば、ゲームに参加するのが1Pと3Pだけだったとします。2Pはゲームパッドはつないでありますし、参加不参加を決めるためのレベルではプレイヤーコントローラーが存在するのですが、そこでエントリーせずに、次のレースをするレベルに移ったら1Pと3Pだけがレースをするということをしたいです。もちろん、その場合レース中の画面は分割数は2です。
他にもいろいろな疑問があるのですが、とりあえずはこの二つを質問させていただきます。
creatorue
(creatorue)
2
すいません、二つ目の疑問はなんとなく解決しそうな気がしますので、一つ目の方が分かる方はとりあえずそちらだけでも回答をよろしくお願いします。
KRNKRS
(KRNKRS)
3
私の独自の実装方法ではありますが、
*
1.カメラもメッシュも持たないただののポーンを作成
- これが各Playerの入力を受け付ける
2.GameModeBPを作成し、DefaultPawnを1.で作成したポーンに設定
- これが「CreatePlayer」を行った際に生成されるポーンになる
3.レベルブループリントで必要分だけPlayerの入力を受け付けるウィジェットを作成+AddViewPort
- 参考画像でいえば画面隅に4枠のPlayer(CPU)枠
- 「UniformGridPanel」とかが使えそう
- BPで生成してもいいし事前にウィジェットに配置してもいい
4.レベルBPがCreatePlayerを4プレイヤー分行う
- 4プレイヤー分生成していつでも参加できるよう入力は常に受け付けられるようにするため
5.各プレイヤー枠ウィジェットに各プレイヤーポーンで取得した入力をイベントディスパッチャー経由で渡す
- なのでウィジェットにはプレイヤーポーンのリファレンスなりを渡す
- スポーン時に引数として渡すようにすれば簡単
こまごましたとこは省きますが、こんな感じで実装しています。
レベル遷移を行う前にRemovePlayerを行うのを忘れないように。次レベルまで残ります。