From ad7cb55bf64459e3efd34ef81ddd2ffc4ae8026c Mon Sep 17 00:00:00 2001 From: swrring Date: Fri, 8 May 2026 15:01:12 +0900 Subject: [PATCH] =?UTF-8?q?BT5-Dev=20#100:=20=ED=88=AC=EB=AA=85=EB=B2=BD?= =?UTF-8?q?=20size=20=EC=A0=95=EC=A0=95=C2=B7PD=20Foreground=20=EC=9E=90?= =?UTF-8?q?=EC=B2=B4=20=EA=B2=80=EC=82=AC=20X=C2=B7waitTimer=20=EC=A0=95?= =?UTF-8?q?=ED=95=A9=20(PD=203=EA=B1=B4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PD 보고 (2026-05-08): 1. 투명벽 위치 너무 짧게 멈춤 (절벽 위치보다 안쪽) 2. 대기 시간 짧음 (1~3초 대기 X) 3. 숨겨진 통로 막힘 진단: - 1: BoxCollider size (0.1, 3) → halfWidth 0.05m → Enemy Capsule bounds 정합 시 절벽 영역 0.282m 앞 멈춤 - 3: PD Foreground 자체 가장자리 영역 = 시각 가림막 영역 끝 = 통로 영역. 본 PM 가장자리 검사 영역에 PD Foreground 포함 → 통로 영역에 투명벽 생성 → Player 통과 X (Layer 13 ↔ 18 OFF임에도 BoxCollider 영역 정합 X 가능성) 정정 (BT100): 1. BoxCollider size: (0.1, 3) → (0.02, 3) (매우 좁음) 2. BoxCollider offset.y: 1 → 0 (Tile 표면 영역·절벽 위치 정확) 3. 자체 가장자리 검사 = Level + AutoForeground 만 (PD Foreground 자체 검사 X) 4. 인접 검사 = Level + AutoForeground + PD Foreground 모두 (안전 영역 모두 포함) 효과: - 투명벽 = 매우 좁은 영역 + Tile 표면 영역 → Enemy 영역 절벽 영역 가까이 도달 - PD Foreground 자체 가장자리 영역 = 검사 X → 숨겨진 통로 영역 투명벽 X → Player·Enemy 통과 가능 - waitTimer 영역 그대로 (1~3초 random·arrive 시점 트리거) --- Assets/Scripts/Mechanics/GameOptimizer.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Assets/Scripts/Mechanics/GameOptimizer.cs b/Assets/Scripts/Mechanics/GameOptimizer.cs index b24e528..a0dafd3 100644 --- a/Assets/Scripts/Mechanics/GameOptimizer.cs +++ b/Assets/Scripts/Mechanics/GameOptimizer.cs @@ -171,12 +171,19 @@ namespace Platformer.Mechanics if (wallParent == null) wallParent = new GameObject("CliffWalls"); int wallCount = 0; + + // BT100 — 자체 가장자리 검사 = Level + AutoForeground 만 (PD Foreground = 시각 가림막·통로 영역 차단 X) + var checkTilemaps = new System.Collections.Generic.List(); + if (levelTm != null) checkTilemaps.Add(levelTm); + if (autoFgTm != null) checkTilemaps.Add(autoFgTm); + + // 인접 검사 = Level + AutoForeground + PD Foreground 모두 (안전 영역 모두 포함) var allTilemaps = new System.Collections.Generic.List(); if (levelTm != null) allTilemaps.Add(levelTm); if (autoFgTm != null) allTilemaps.Add(autoFgTm); if (pdFgTm != null) allTilemaps.Add(pdFgTm); - foreach (var tm in allTilemaps) + foreach (var tm in checkTilemaps) { var bounds = tm.cellBounds; for (int x = bounds.xMin; x <= bounds.xMax; x++) @@ -220,8 +227,9 @@ namespace Platformer.Mechanics wall.transform.position = worldPos; wall.layer = 18; // EnemyWall var box = wall.AddComponent(); - box.size = new Vector2(0.1f, 3f); // 좁고 높은 영역 - box.offset = new Vector2(0f, 1f); // Tile 위 영역 차단 (지면 위 1.5m) + // BT100 — size·offset 정정: 매우 좁은 영역(0.02) + Tile 표면 영역(offset.y=0)·절벽 위치 정확 + box.size = new Vector2(0.02f, 3f); + box.offset = new Vector2(0f, 0f); } ///