Reputation: 4312
I was using Unity's built-in multiplayer system for creating a multiplayer game and I have completed my whole game work.
At present in my multiplayer game, my both players get spawned as the game get started but I want to spawn them after 10 seconds waiting.
Because I want to provide this kind of functionality in a game so I want to give some time to players.
For this reason, I have googled on multiple things and found this link: Custom Player Spawning
This way I can update the player and then attach with the network connection still two problems exist:
What do I require to do for these? Here is my NetworkManager code:
public class DodgelsNetworkManager : NetworkManager
{
public override void OnClientConnect (NetworkConnection connection)
{
base.OnClientConnect (connection);
GameHUDController.Instance.UpdateDebugMesssage ("\nOnClientConnect");
Camera.main.SendMessage (GameConstants.ACTIVATE_NETWORK_WAITING_PANEL, true, SendMessageOptions.DontRequireReceiver);
LayerScroller.stopScrolling = true;
// client joined the host
if (connection.connectionId > 0) {
StartCoroutine (AfterDelayHideWaitingDialog ());
}
}
IEnumerator AfterDelayHideWaitingDialog ()
{
GameObject networkPlayerObj = null;
while (networkPlayerObj == null) {
yield return new WaitForSeconds (0.1f);
networkPlayerObj = GameObject.FindGameObjectWithTag (GameConstants.TAG_HUMAN_PLAYER);
}
networkPlayerObj.GetComponent<NetworkPlayerController> ().HidePlayerWaitingDialog ();
}
public override void OnServerAddPlayer (NetworkConnection conn, short playerControllerId)
{
Debug.Log ("-------------OnServerAddPlayer");
GameObject player = Instantiate (playerPrefab, startPositions [conn.connectionId].position, Quaternion.identity);
NetworkServer.AddPlayerForConnection (conn, player, playerControllerId);
}
}
Share your suggestions regarding this.
Upvotes: 0
Views: 497
Reputation: 658
You call call another subroutine that waits 10 seconds before instantiating the player in OnServerAddPlayer.
if (manager.IsClientConnected() && !ClientScene.ready)
{
ClientScene.Ready(manager.client.connection);
ClientScene.AddPlayer(0);
}
Upvotes: 1