- Home /
Sequencing Spawning for Multiplayer
I'm making a spaceship game where players spawn at a spawn point on each side. The script below, which fires once per player when they enter the scene, puts the player on a team and spawns them at the one spawn point for that team. However, if multiple players spawn at once, it becomes chaos (no one wants that). I want players to spawn only when there is no fighter already there; in other words, wait to spawn until the spawn point is clear. The "Spawn Collision Check" script mentioned uses a trigger to see if anything is inside the spawn point. Here's the code I have so far:
var redPrefab : Transform;
var bluePrefab : Transform;
var redSpawn : Transform;
var blueSpawn : Transform;
function OnNetworkLoadedLevel (playerNum : int)
{
if (playerNum % 1 == 1){
if (blueSpawn.GetComponent("SpawnCollisionCheck").spawnHit == true){
yield;
}
else{
Spawn(1);
}
}
else{
if (redSpawn.GetComponent("SpawnCollisionCheck").spawnHit == true){
yield;
}
else{
Spawn(0);
}
}
}
I'm guessing the solution has to do with coroutines, but this script is fired once per player. How do I spawn each character in sequence?
Is it not possible to place more spawn points? Ideally, one per potential player on each $$anonymous$$m?
If not, you can run a 'master script' on the server to check spawn point clearance and send RPC to each player in turn to initiate spawn.
I'm thinking now to spawn players within a spawning area. Is there a way to do this without them spawning on each other (like a collision check)?
Answer by Bluestrike · Jul 24, 2012 at 07:18 AM
I have my spawnpoints added to an array, when a player spawns, this spawn is taken out of the array, and it added back when the player has left the spawn (trigger that checks if anything is in it).
For spawning I pick a random spawn from the array that holds the availeble spawns. (for a team game it would mean you need to have a spawnpoint array for eatch team.)
If you want only one spawn per team, the players would need to be in an (dead team members)array and spawned on a first come first serve basis from a spawn loop that picks the player first in the array (and remove him from the array to make room for the next in line). Not really reccomended as a jerk player can block the spawn and take the game hostage and players will leave :)
Your answer
Follow this Question
Related Questions
Unity networking tutorial? 6 Answers
Why scene objects in multiplayer will not spawn, if enabled after scene is loaded? 2 Answers
Custom network ID values 0 Answers
Help needed on UNET client authority 0 Answers