46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
/*
|
|
Documentation: https://mirror-networking.gitbook.io/docs/components/network-manager
|
|
API Reference: https://mirror-networking.com/docs/api/Mirror.NetworkManager.html
|
|
*/
|
|
|
|
namespace Mirror.Examples.Pong
|
|
{
|
|
// Custom NetworkManager that simply assigns the correct racket positions when
|
|
// spawning players. The built in RoundRobin spawn method wouldn't work after
|
|
// someone reconnects (both players would be on the same side).
|
|
[AddComponentMenu("")]
|
|
public class NetworkManagerPong : NetworkManager
|
|
{
|
|
public Transform leftRacketSpawn;
|
|
public Transform rightRacketSpawn;
|
|
GameObject ball;
|
|
|
|
public override void OnServerAddPlayer(NetworkConnectionToClient conn)
|
|
{
|
|
// add player at correct spawn position
|
|
Transform start = numPlayers == 0 ? leftRacketSpawn : rightRacketSpawn;
|
|
GameObject player = Instantiate(playerPrefab, start.position, start.rotation);
|
|
NetworkServer.AddPlayerForConnection(conn, player);
|
|
|
|
// spawn ball if two players
|
|
if (numPlayers == 2)
|
|
{
|
|
ball = Instantiate(spawnPrefabs.Find(prefab => prefab.name == "Ball"));
|
|
NetworkServer.Spawn(ball);
|
|
}
|
|
}
|
|
|
|
public override void OnServerDisconnect(NetworkConnectionToClient conn)
|
|
{
|
|
// destroy ball
|
|
if (ball != null)
|
|
NetworkServer.Destroy(ball);
|
|
|
|
// call base functionality (actually destroys the player)
|
|
base.OnServerDisconnect(conn);
|
|
}
|
|
}
|
|
}
|