diff --git a/Assets/Scenes/GameMain.unity b/Assets/Scenes/GameMain.unity index b90d6a7..5249b3a 100644 --- a/Assets/Scenes/GameMain.unity +++ b/Assets/Scenes/GameMain.unity @@ -2028,7 +2028,9 @@ MonoBehaviour: showInExploredAreas: 0 updateInterval: 0.2 renderers: [] - debugLogging: 0 + enableDistantVisibility: 1 + heightVisibilityMultiplier: 2 + minHeightForDistantVisibility: 3 useExploredMaterial: 0 exploredMaterial: {fileID: 0} --- !u!1 &1433142230 @@ -2450,7 +2452,7 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 896 collisionCheckRadius: 1 - spawnOnStart: 0 + spawnOnStart: 1 groupUnderParent: 1 --- !u!4 &1572384099 Transform: @@ -2678,6 +2680,8 @@ MonoBehaviour: fogMaterial: {fileID: 2100000, guid: eb0604feb76547a488648224ebb23e77, type: 2} updateInterval: 0.1 fogHeight: 2 + enableSmoothing: 1 + smoothingPasses: 2 unexploredColor: {r: 0, g: 0, b: 0, a: 1} exploredColor: {r: 0, g: 0, b: 0, a: 0.6} visibleColor: {r: 0, g: 0, b: 0, a: 0} @@ -2881,63 +2885,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 5749230937810543840, guid: 88f7f1e8a019b674498ab5fd494c1d34, type: 3} m_PrefabInstance: {fileID: 1862165056} m_PrefabAsset: {fileID: 0} ---- !u!1001 &1912551706 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalPosition.x - value: -8.854406 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalPosition.y - value: 1.0000119 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalPosition.z - value: -60.088272 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5791990943856352332, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7245241003860522441, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} - propertyPath: m_Name - value: Rock2 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 2c33c67d086286d4a929d533b4e26863, type: 3} --- !u!1001 &1975225896 PrefabInstance: m_ObjectHideFlags: 0 @@ -3656,4 +3603,3 @@ SceneRoots: - {fileID: 1442785555} - {fileID: 1440648431994998967} - {fileID: 1061936651} - - {fileID: 1912551706} diff --git a/Assets/Scripts/Building.cs b/Assets/Scripts/Building.cs index 0d7f814..279f776 100644 --- a/Assets/Scripts/Building.cs +++ b/Assets/Scripts/Building.cs @@ -88,7 +88,7 @@ namespace Northbound if (useInitialOwner && _ownerId.Value == 0) { _ownerId.Value = initialOwnerId; - Debug.Log($"[Building] 사전 배치 건물 '{buildingData?.buildingName ?? gameObject.name}' 소유자: {initialOwnerId}, 팀: {_team.Value}"); + // Debug.Log($"[Building] 사전 배치 건물 '{buildingData?.buildingName ?? gameObject.name}' 소유자: {initialOwnerId}, 팀: {_team.Value}"); } else if (!useInitialOwner && _ownerId.Value == 0) { diff --git a/Assets/Scripts/BuildingQuickslotUI.cs b/Assets/Scripts/BuildingQuickslotUI.cs index 4bdfd0d..e4211e8 100644 --- a/Assets/Scripts/BuildingQuickslotUI.cs +++ b/Assets/Scripts/BuildingQuickslotUI.cs @@ -92,7 +92,7 @@ namespace Northbound { int slotIndex = i; // 클로저 캡처를 위한 로컬 변수 _quickslotActions[i].performed += ctx => OnQuickslotPressed(slotIndex); - Debug.Log($"[BuildingQuickslotUI] QuickSlot{i + 1} 액션 바인딩 성공"); + // Debug.Log($"[BuildingQuickslotUI] QuickSlot{i + 1} 액션 바인딩 성공"); } else { diff --git a/Assets/Scripts/Editor/FogOfWarVisibilitySetup.cs b/Assets/Scripts/Editor/FogOfWarVisibilitySetup.cs index 958c580..3708505 100644 --- a/Assets/Scripts/Editor/FogOfWarVisibilitySetup.cs +++ b/Assets/Scripts/Editor/FogOfWarVisibilitySetup.cs @@ -92,7 +92,7 @@ namespace Northbound.Editor [MenuItem("Tools/Fog of War/Add Visibility to Scene Obstacles")] public static void AddVisibilityToSceneObstacles() { - GameObject[] allObjects = GameObject.FindObjectsOfType(); + GameObject[] allObjects = GameObject.FindObjectsByType(FindObjectsSortMode.None); int count = 0; foreach (GameObject obj in allObjects) @@ -153,7 +153,7 @@ namespace Northbound.Editor } // Remove from scene objects - FogOfWarVisibility[] sceneComponents = GameObject.FindObjectsOfType(); + FogOfWarVisibility[] sceneComponents = GameObject.FindObjectsByType(FindObjectsSortMode.None); int sceneCount = sceneComponents.Length; foreach (var comp in sceneComponents) diff --git a/Assets/Scripts/FogOfWarSystem.cs b/Assets/Scripts/FogOfWarSystem.cs index 15d9d48..a49f540 100644 --- a/Assets/Scripts/FogOfWarSystem.cs +++ b/Assets/Scripts/FogOfWarSystem.cs @@ -298,7 +298,7 @@ namespace Northbound if (!_visionProviders.Contains(provider)) { _visionProviders.Add(provider); - Debug.Log($"[FogOfWar] Vision Provider 등록: {provider.GetTransform().name} (Owner: {provider.GetOwnerId()})"); + // Debug.Log($"[FogOfWar] Vision Provider 등록: {provider.GetTransform().name} (Owner: {provider.GetOwnerId()})"); } } diff --git a/Assets/Scripts/FogOfWarVisibility.cs b/Assets/Scripts/FogOfWarVisibility.cs index f2054a8..621d60f 100644 --- a/Assets/Scripts/FogOfWarVisibility.cs +++ b/Assets/Scripts/FogOfWarVisibility.cs @@ -19,9 +19,6 @@ namespace Northbound [Tooltip("Renderers to show/hide (auto-detected if empty)")] public Renderer[] renderers; - [Tooltip("Enable debug logging for this object")] - public bool debugLogging = false; - [Header("Height-Based Distant Visibility")] [Tooltip("Enable visibility from farther away based on object height")] public bool enableDistantVisibility = true; @@ -52,11 +49,6 @@ namespace Northbound if (renderers == null || renderers.Length == 0) { renderers = GetComponentsInChildren(); - - if (debugLogging) - { - Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Auto-detected {renderers.Length} renderers"); - } } if (renderers == null || renderers.Length == 0) @@ -81,17 +73,7 @@ namespace Northbound // Calculate object height for distant visibility _objectHeight = CalculateObjectHeight(); - if (debugLogging) - { - Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Object height = {_objectHeight}m"); - } - // CRITICAL: Start hidden and stay hidden until fog system confirms visibility - if (debugLogging) - { - Debug.Log($"[FogOfWarVisibility] {gameObject.name}: START - Setting all {renderers.Length} renderers to HIDDEN"); - } - // Force initial hide - don't use SetVisible because _isVisible defaults to false // which would cause early return _isVisible = true; // Set to true first so SetVisible(false) actually runs @@ -198,16 +180,10 @@ namespace Northbound isDistantVisible = CheckDistantVisibility(fogSystem); } - if (debugLogging) - { - Debug.Log($"[FogOfWarVisibility] {gameObject.name} at {transform.position}: State={fogState}, DistantVisible={isDistantVisible}, Height={_objectHeight}m"); - } - switch (fogState) { case FogOfWarState.Visible: // Currently visible - show with original materials - if (debugLogging) Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Setting VISIBLE"); SetVisible(true); SetExploredVisual(false); break; @@ -217,13 +193,11 @@ namespace Northbound // BUT: Tall objects can be seen from farther away if (showInExploredAreas || isDistantVisible) { - if (debugLogging) Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Setting EXPLORED (visible) - distantVisible={isDistantVisible}"); SetVisible(true); SetExploredVisual(true); } else { - if (debugLogging) Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Setting EXPLORED (hidden)"); SetVisible(false); } break; @@ -232,13 +206,11 @@ namespace Northbound // Never seen - hide unless tall enough to see from distance if (isDistantVisible) { - if (debugLogging) Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Setting UNEXPLORED but DISTANT VISIBLE"); SetVisible(true); SetExploredVisual(true); // Show as explored/distant } else { - if (debugLogging) Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Setting UNEXPLORED (hidden)"); SetVisible(false); } break; @@ -276,11 +248,6 @@ namespace Northbound float baseVisionRange = 15f; // You can make this configurable float totalRange = baseVisionRange + extendedRange; - if (debugLogging) - { - Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Distance={distanceToPlayer:F1}m, ExtendedRange={totalRange:F1}m (height bonus: +{extendedRange:F1}m)"); - } - return distanceToPlayer <= totalRange; } @@ -291,29 +258,13 @@ namespace Northbound _isVisible = visible; if (renderers == null || renderers.Length == 0) - { - if (debugLogging) - { - Debug.LogWarning($"[FogOfWarVisibility] {gameObject.name}: SetVisible({visible}) called but no renderers!"); - } return; - } - - if (debugLogging) - { - Debug.Log($"[FogOfWarVisibility] {gameObject.name}: SetVisible({visible}) - updating {renderers.Length} renderers"); - } foreach (var renderer in renderers) { if (renderer != null) { renderer.enabled = visible; - - if (debugLogging) - { - Debug.Log($"[FogOfWarVisibility] {gameObject.name}: Renderer '{renderer.name}' enabled = {visible}"); - } } } } diff --git a/Assets/Scripts/ObstacleSpawner.cs b/Assets/Scripts/ObstacleSpawner.cs index d5d55aa..3af84d8 100644 --- a/Assets/Scripts/ObstacleSpawner.cs +++ b/Assets/Scripts/ObstacleSpawner.cs @@ -121,7 +121,7 @@ namespace Northbound int totalSpawned = 0; int targetCount = Mathf.RoundToInt(maxTotalObstacles * density); - Debug.Log($"[ObstacleSpawner] 장애물 생성 시작 (목표: {targetCount}개)"); + // Debug.Log($"[ObstacleSpawner] 장애물 생성 시작 (목표: {targetCount}개)"); // 각 장애물 타입별로 최소 개수 보장 foreach (var obstacle in obstacles) @@ -160,7 +160,7 @@ namespace Northbound // 모든 장애물이 최대치에 도달했는지 확인 if (AllObstaclesAtMax()) { - Debug.Log("[ObstacleSpawner] 모든 장애물이 최대 개수에 도달했습니다."); + // Debug.Log("[ObstacleSpawner] 모든 장애물이 최대 개수에 도달했습니다."); break; } continue; @@ -182,7 +182,7 @@ namespace Northbound Debug.LogWarning($"[ObstacleSpawner] 배치 공간이 부족합니다. {totalSpawned}개만 생성되었습니다."); } - Debug.Log($"[ObstacleSpawner] 장애물 생성 완료: {totalSpawned}개"); + // Debug.Log($"[ObstacleSpawner] 장애물 생성 완료: {totalSpawned}개"); } private bool AllObstaclesAtMax() @@ -209,14 +209,14 @@ namespace Northbound // 최소 거리 체크 if (!IsValidPosition(randomPos)) { - Debug.Log($"[Spawn] 최소 거리 체크 실패: {randomPos}"); + // Debug.Log($"[Spawn] 최소 거리 체크 실패: {randomPos}"); continue; } // 충돌 체크 if (checkCollision && Physics.CheckSphere(randomPos, collisionCheckRadius, collisionLayers)) { - Debug.Log($"[Spawn] 충돌 감지: {randomPos}, 반경: {collisionCheckRadius}"); + // Debug.Log($"[Spawn] 충돌 감지: {randomPos}, 반경: {collisionCheckRadius}"); continue; } @@ -226,11 +226,11 @@ namespace Northbound if (Physics.Raycast(randomPos + Vector3.up * 100f, Vector3.down, out RaycastHit hit, 200f)) { randomPos = hit.point; - Debug.Log($"[Spawn] 지형 감지 성공: {hit.collider.name}"); + // Debug.Log($"[Spawn] 지형 감지 성공: {hit.collider.name}"); } else { - Debug.Log($"[Spawn] 지형 감지 실패: {randomPos}"); + // Debug.Log($"[Spawn] 지형 감지 실패: {randomPos}"); // 지형이 없어도 배치 시도 } } @@ -263,7 +263,7 @@ namespace Northbound } _spawnedPositions.Add(randomPos); - Debug.Log($"[Spawn] 장애물 배치 성공: {obstacleEntry.prefab.name} at {randomPos}"); + // Debug.Log($"[Spawn] 장애물 배치 성공: {obstacleEntry.prefab.name} at {randomPos}"); return true; } diff --git a/Assets/Scripts/TeamGate.cs b/Assets/Scripts/TeamGate.cs index 60f3046..b5f1249 100644 --- a/Assets/Scripts/TeamGate.cs +++ b/Assets/Scripts/TeamGate.cs @@ -167,7 +167,7 @@ namespace Northbound PlaySoundClientRpc(true); } - Debug.Log($"[TeamGate] {other.name} 텔레포트: {triggeredCollider.name} -> {exitPoint.name}"); + // Debug.Log($"[TeamGate] {other.name} 텔레포트: {triggeredCollider.name} -> {exitPoint.name}"); } else { @@ -177,7 +177,7 @@ namespace Northbound PlaySoundClientRpc(false); } - Debug.Log($"[TeamGate] {other.name} 차단됨 - 팀: {teamMember.GetTeam()}"); + // Debug.Log($"[TeamGate] {other.name} 차단됨 - 팀: {teamMember.GetTeam()}"); } _triggerStates[other] = false;