From bbf7041676ac027d186ea24b74bd9b7db795bdd8 Mon Sep 17 00:00:00 2001 From: swrring Date: Thu, 7 May 2026 23:17:57 +0900 Subject: [PATCH] =?UTF-8?q?BT5-Dev=20#54:=20Foreground=20TilemapCollider2D?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0=20=E2=80=94=20=EC=8B=9C=EA=B0=81=EB=A7=8C?= =?UTF-8?q?=20=ED=91=9C=EC=8B=9C=20(PD=20=EB=8B=A8=EC=88=9C=20=EC=A0=9C?= =?UTF-8?q?=EC=95=88=20=EC=B1=84=ED=83=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PD 결정 (2026-05-07): "그냥 단순히 Foreground에 충돌체크만 없애면 되지 않을까?" 변경: - BT47 Foreground TilemapCollider2D 자동 부착 영역 폐기 - 기존 TilemapCollider2D Object.Destroy - fgTilemap·fgTc null 유지 → 자동 분류(§83~) + 사후 복원(§129~) 자동 skip - Foreground GameObject Layer 16 유지 (시각 정합) 영향 (PD 사전 명시 + 인지): - 모든 Foreground Tile 충돌 X = 발판 위 착지 X (Drop-Through 패턴 폐기) - BT47부터 자동 분류로 Foreground에 누적된 Tile들 = 시각만·자유 통과 - Level Tilemap (TileGround·TileGroundTop 1266개)만 영구 충돌 유지 본 PM 5회 가설 누적 부정확 후 PD 직접 단순 해결 채택: - BT49 None 차단 (효과 X·restored=0) - BT50 Grid→Sprite 강제 (효과 X·forced=0) - BT51 사후 Grid→Sprite 폐기 (효과 X·restored=0) - BT52 TileFloating* 단일 (decor=0 부정확) - BT53 카탈로그 8종 확장 (decor=1 부정확·1266개 미식별) → PD 단순 제안 = 5회 가설 모두 우회 롤백 경로 (pm-auditor 권고): - BT47 자동 분류 영역 + 사후 복원 영역 코드 보존 (fgTilemap null check skip만 추가) - 회귀 시 fgTc 자동 부착 영역 회복 → 자동 분류 재가동 가능 후속 의무: - PD Refresh+Play 시각 검증 + 본 PM Editor.log direct read - 발판 위 착지 보존 의도 시 BT54 회귀 또는 카탈로그 v1.2 전환 Debug.Log: 자동 분류·사후 복원 출력 모두 fgTilemap null로 skip → BT54 시점 출력 X --- Assets/Scripts/Mechanics/GameOptimizer.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/Mechanics/GameOptimizer.cs b/Assets/Scripts/Mechanics/GameOptimizer.cs index 1acca08..6e56801 100644 --- a/Assets/Scripts/Mechanics/GameOptimizer.cs +++ b/Assets/Scripts/Mechanics/GameOptimizer.cs @@ -68,16 +68,21 @@ namespace Platformer.Mechanics if (appliedNames.Count < 8) appliedNames.Add($"{c.gameObject.name}({c.GetType().Name})"); } - // BT47 — Foreground TilemapCollider2D + Layer 16 (ColliderType Sprite 강제는 Tile 이동 후 한 번에 처리) + // BT54 — PD 제안 채택 (2026-05-07): "그냥 단순히 Foreground에 충돌체크만 없애면 되지 않을까?" + // Foreground Tilemap = 시각만 (TilemapRenderer + Layer 16). TilemapCollider2D 자동 부착 폐기. + // 영향: 모든 Foreground Tile 충돌 X = 발판 위 착지 X (Drop-Through 패턴 폐기·시각만 표시). + // 자동 분류 영역(§83~) 및 사후 복원 영역(§129~)은 fgTilemap null/fgTc null 시 자동 skip. + // PD 시각 검증 후 발판 위 착지 보존 의도 시 BT54 회귀 또는 카탈로그 v1.2 전환. var foreground = GameObject.Find("Foreground"); UnityEngine.Tilemaps.Tilemap fgTilemap = null; UnityEngine.Tilemaps.TilemapCollider2D fgTc = null; if (foreground != null) { - fgTc = foreground.GetComponent(); - if (fgTc == null) fgTc = foreground.AddComponent(); foreground.layer = 16; - fgTilemap = foreground.GetComponent(); + // 기존 TilemapCollider2D 제거 (PD 제안 — 충돌 X) + var existingFgTc = foreground.GetComponent(); + if (existingFgTc != null) Object.Destroy(existingFgTc); + // fgTilemap·fgTc null 유지 = 자동 분류 + 사후 복원 영역 자동 skip } // BT53-A1 — 자동 분류 카탈로그 확장 (PD 옵션 A1 채택 2026-05-07).