diff --git a/Assets/Scripts/FogOfWarSystem.cs b/Assets/Scripts/FogOfWarSystem.cs index 9614238..fd27d62 100644 --- a/Assets/Scripts/FogOfWarSystem.cs +++ b/Assets/Scripts/FogOfWarSystem.cs @@ -355,7 +355,7 @@ namespace Northbound Vector3 position = provider.GetTransform().position; float visionRange = provider.GetVisionRange(); - + RevealArea(ownerId, position, visionRange); } @@ -365,11 +365,18 @@ namespace Northbound ulong clientId = kvp.Key; FogOfWarData fogData = kvp.Value; + // 해당 클라이언트가 여전히 연결되어 있는지 확인 + if (NetworkManager.Singleton == null || + !NetworkManager.Singleton.ConnectedClients.ContainsKey(clientId)) + { + continue; + } + // 압축된 데이터로 전송 byte[] visibleData = fogData.GetVisibleData(); byte[] exploredData = fogData.GetExploredData(); - SendFogDataToClientRpc(visibleData, exploredData, + SendFogDataToClientRpc(visibleData, exploredData, new ClientRpcParams { Send = new ClientRpcSendParams diff --git a/Assets/Scripts/PlayerVisionProvider.cs b/Assets/Scripts/PlayerVisionProvider.cs index 46f9799..17c8c88 100644 --- a/Assets/Scripts/PlayerVisionProvider.cs +++ b/Assets/Scripts/PlayerVisionProvider.cs @@ -9,10 +9,12 @@ namespace Northbound public class PlayerVisionProvider : NetworkBehaviour, IVisionProvider { private PlayerStats _playerStats; + private NetworkPlayerController _playerController; public override void OnNetworkSpawn() { _playerStats = GetComponent(); + _playerController = GetComponent(); if (IsServer) { FogOfWarSystem.Instance?.RegisterVisionProvider(this); @@ -27,7 +29,9 @@ namespace Northbound } } - public ulong GetOwnerId() => OwnerClientId; + // NetworkPlayerController.OwnerPlayerId 사용 (실제 플레이어 ID) + // OwnerClientId는 서버 소유권이므로 잘못된 ID 반환 + public ulong GetOwnerId() => _playerController?.OwnerPlayerId ?? OwnerClientId; public float GetVisionRange() => _playerStats?.GetSight() ?? 10f; public Transform GetTransform() => transform; public bool IsActive() => IsSpawned;