From bfb5832aacdd1949f62c085dd9646b53ae5d1c0f Mon Sep 17 00:00:00 2001 From: swrring Date: Fri, 8 May 2026 00:00:11 +0900 Subject: [PATCH] =?UTF-8?q?BT5-Dev=20#63:=20BT48=20+=20None=20=EC=B0=A8?= =?UTF-8?q?=EB=8B=A8=20(=EB=82=98=EB=AC=B4=20=EC=B6=A9=EB=8F=8C=20?= =?UTF-8?q?=EC=A0=95=EC=A0=95=EB=A7=8C=20=EC=B6=94=EA=B0=80=C2=B7PD=20?= =?UTF-8?q?=EB=AA=85=EC=8B=9C=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): "이제 이 상태에서 나무가 충돌되는 것만 수정해봐" 변경 (BT62 = BT48 시점 + 1행 추가): - Level → Foreground 자동 분류 영역에 None Tile 차단 추가: if (tileAsset != null && tileAsset.colliderType == None) continue; 효과: - BT48 영역 발판 동작 그대로 보존 (PD 정합 시점) - tree·plant·fence·house (4종 None Tile) = 자동 분류 제외 - Level Tilemap 잔존 + Tile asset 자체 None Collider = 자연 통과 (충돌 X) 미적용 영역 (BT49 영역과 차이): - 사후 복원 영역(Foreground 그려진 None Tile SetColliderType(None) 복원) 미추가 - 이유: PD 명시 = 나무 충돌만 정정 + BT48 영역 변경 최소화 Player.prefab·PlayerController.cs = BT62 영역 그대로 (BT48 시점). BT49~BT61 누적 14회 변경은 BT62에서 이미 모두 폐기됨. 후속 의무: - PD Refresh+Play 시각 검증 - 본 PM Editor.log [BT48-MoveTiles] direct read - 나무·plant·fence·house 통과 + 발판 영역 정합 확증 --- Assets/Scripts/Mechanics/GameOptimizer.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Assets/Scripts/Mechanics/GameOptimizer.cs b/Assets/Scripts/Mechanics/GameOptimizer.cs index 32bbd28..9390b2f 100644 --- a/Assets/Scripts/Mechanics/GameOptimizer.cs +++ b/Assets/Scripts/Mechanics/GameOptimizer.cs @@ -102,6 +102,13 @@ namespace Platformer.Mechanics { var pos = new Vector3Int(x, y, 0); if (!levelTilemap.HasTile(pos)) continue; + + // BT63 — Tile asset의 m_ColliderType=None = 배경 의도 (tree·plant·fence·house) = 자동 분류 제외 + // BT48 시점 + 나무 충돌 정정만 추가 (PD 명시 채택 2026-05-07). + // 결과: 나무·plant·fence·house Tile은 Level 잔존·자체 None Collider로 자연 통과. + var tileAsset = levelTilemap.GetTile(pos); + if (tileAsset != null && tileAsset.colliderType == UnityEngine.Tilemaps.Tile.ColliderType.None) continue; + Vector3 worldPos = levelTilemap.CellToWorld(pos); bool aboveThreshold = worldPos.y >= airThresholdY; bool isSmallAir = !aboveThreshold && IsSmallAirPlatform(levelTilemap, pos, MAX_PLATFORM_WIDTH);