Advertisement
lildemon

Unity2d multiplayer camera problem

May 20th, 2025
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.21 KB | Source Code | 0 0
  1.         public override void OnNetworkSpawn() {
  2.             if (!IsServer) return;
  3.             SpawnAllPlayers();
  4.         }
  5.  
  6.         private void SpawnAllPlayers() {
  7.             var clients = NetworkManager.Singleton.ConnectedClientsList;
  8.             for (int i = 0; i < clients.Count; i++) {
  9.                 var cid = clients[i].ClientId;
  10.                 int gridIndex = (i == 0) ? 0 : 1;
  11.                 var go = Instantiate(playerPrefab);
  12.                 var netObj = go.GetComponent<NetworkObject>();
  13.  
  14.                 netObj.SpawnAsPlayerObject(cid);
  15.                 var camCtrl = go.GetComponent<CameraController>();
  16.                 Debug.Log($"[GameManager] spawning player for Client {cid}, camCtrl={(camCtrl!=null)}, owner={netObj.OwnerClientId}");
  17.                 if (camCtrl != null)
  18.                 {
  19.                     var rpcParams = new ClientRpcParams {
  20.                         Send = new ClientRpcSendParams { TargetClientIds = new[] { cid } }
  21.                     };
  22.                     Debug.Log($"[GameManager] → calling SpawnCameraClientRpc on Client {cid}");
  23.                     camCtrl.SpawnCameraClientRpc(gridIndex, rpcParams);
  24.                 }
  25.                 else
  26.                 {
  27.                     Debug.LogError("[GameManager] CameraController component missing on playerPrefab!");
  28.                 }
  29.                
  30.             }
  31.         }
  32.  
  33.  
  34. public class CameraController : NetworkBehaviour {
  35.     private static readonly Vector3 Player1CameraPos = new(6f, 3.5f, -10f);
  36.     private static readonly Vector3 Player2CameraPos = new(39f, 3.5f, -10f);
  37.  
  38.     [SerializeField] private GameObject cameraHolderObj;
  39.  
  40.  
  41.     [ClientRpc]
  42.     public void SpawnCameraClientRpc(int gridIndex, ClientRpcParams rpcParams = default) {
  43.         Debug.Log(
  44.             $"[CameraController] SpawnCameraClientRpc() on LocalClientId={NetworkManager.Singleton.LocalClientId}, IsOwner={IsOwner}");
  45.  
  46.         if (!IsOwner) return;
  47.  
  48.         Debug.Log($"[CameraController] actually spawning camera for gridIndex={gridIndex}");
  49.         var pos = (gridIndex == 0) ? Player1CameraPos : Player2CameraPos;
  50.         print("this is pos " + pos);
  51.         Instantiate(cameraHolderObj, pos, Quaternion.identity);
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement