Siddharth
Siddharth

Reputation: 4312

After 10 Seconds Player Spawning in Unity Multiplayer

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.

enter image description here

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

Answers (1)

slaphshot33324
slaphshot33324

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

Related Questions