NetworkManagerPong.cs 1.6 KB

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