Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public override void OnNetworkSpawn() {
- if (!IsServer) return;
- SpawnAllPlayers();
- }
- private void SpawnAllPlayers() {
- var clients = NetworkManager.Singleton.ConnectedClientsList;
- for (int i = 0; i < clients.Count; i++) {
- var cid = clients[i].ClientId;
- int gridIndex = (i == 0) ? 0 : 1;
- var go = Instantiate(playerPrefab);
- var netObj = go.GetComponent<NetworkObject>();
- netObj.SpawnAsPlayerObject(cid);
- var camCtrl = go.GetComponent<CameraController>();
- Debug.Log($"[GameManager] spawning player for Client {cid}, camCtrl={(camCtrl!=null)}, owner={netObj.OwnerClientId}");
- if (camCtrl != null)
- {
- var rpcParams = new ClientRpcParams {
- Send = new ClientRpcSendParams { TargetClientIds = new[] { cid } }
- };
- Debug.Log($"[GameManager] → calling SpawnCameraClientRpc on Client {cid}");
- camCtrl.SpawnCameraClientRpc(gridIndex, rpcParams);
- }
- else
- {
- Debug.LogError("[GameManager] CameraController component missing on playerPrefab!");
- }
- }
- }
- public class CameraController : NetworkBehaviour {
- private static readonly Vector3 Player1CameraPos = new(6f, 3.5f, -10f);
- private static readonly Vector3 Player2CameraPos = new(39f, 3.5f, -10f);
- [SerializeField] private GameObject cameraHolderObj;
- [ClientRpc]
- public void SpawnCameraClientRpc(int gridIndex, ClientRpcParams rpcParams = default) {
- Debug.Log(
- $"[CameraController] SpawnCameraClientRpc() on LocalClientId={NetworkManager.Singleton.LocalClientId}, IsOwner={IsOwner}");
- if (!IsOwner) return;
- Debug.Log($"[CameraController] actually spawning camera for gridIndex={gridIndex}");
- var pos = (gridIndex == 0) ? Player1CameraPos : Player2CameraPos;
- print("this is pos " + pos);
- Instantiate(cameraHolderObj, pos, Quaternion.identity);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement