BT5-Dev #100: 투명벽 size 정정·PD Foreground 자체 검사 X·waitTimer 정합 (PD 3건)
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 시점 트리거)
This commit is contained in:
parent
63cecf04ec
commit
ad7cb55bf6
|
|
@ -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<UnityEngine.Tilemaps.Tilemap>();
|
||||
if (levelTm != null) checkTilemaps.Add(levelTm);
|
||||
if (autoFgTm != null) checkTilemaps.Add(autoFgTm);
|
||||
|
||||
// 인접 검사 = Level + AutoForeground + PD Foreground 모두 (안전 영역 모두 포함)
|
||||
var allTilemaps = new System.Collections.Generic.List<UnityEngine.Tilemaps.Tilemap>();
|
||||
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<BoxCollider2D>();
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Reference in New Issue