NetworkManagerPong.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using UnityEngine;
  2. namespace Mirror.Examples.Pong
  3. {
  4. // Custom NetworkManager that simply assigns the correct racket positions when
  5. // spawning players. The built in RoundRobin spawn method wouldn't work after
  6. // someone reconnects (both players would be on the same side).
  7. [AddComponentMenu("")]
  8. public class NetworkManagerPong : NetworkManager
  9. {
  10. public Transform leftRacketSpawn;
  11. public Transform rightRacketSpawn;
  12. GameObject ball;
  13. public override void OnServerAddPlayer(NetworkConnection conn)
  14. {
  15. // add player at correct spawn position
  16. Transform start = numPlayers == 0 ? leftRacketSpawn : rightRacketSpawn;
  17. GameObject player = Instantiate(playerPrefab, start.position, start.rotation);
  18. NetworkServer.AddPlayerForConnection(conn, player);
  19. // spawn ball if two players
  20. if (numPlayers == 2)
  21. {
  22. ball = Instantiate(spawnPrefabs.Find(prefab => prefab.name == "Ball"));
  23. NetworkServer.Spawn(ball);
  24. }
  25. }
  26. public override void OnServerDisconnect(NetworkConnection conn)
  27. {
  28. // destroy ball
  29. if (ball != null)
  30. NetworkServer.Destroy(ball);
  31. // call base functionality (actually destroys the player)
  32. base.OnServerDisconnect(conn);
  33. }
  34. }
  35. }