BT5-Dev #103: 정확 측정 (Start 시점·0.1m 간격·Capsule 정확)

PD 명시 (2026-05-08): "미리 생성하는 시점에 맵 탐색·자신이 탐색 가능한 범위 결정"

진단:
- BT94/BT97 영역 측정 영역 0.5m 간격 + groundY = transform.y - 0.34f 추정
- 0.5m 미만 영역 절벽 검출 X 가능
- groundY 추정 영역 Capsule offset 영역과 정합 X 가능

정정 (BT103):
- groundY = _collider.bounds.min.y + 0.05f (Capsule 발 영역 정확)
- 간격: 0.5m → 0.1m (촘촘 측정)
- 안전 margin: 1.5m → 0.5m (실제 절벽 영역까지 정확)
- Start 시점 1회 측정 (BT97 영역 그대로·AfterSceneLoad 후·AutoForeground Tile 활성)

효과:
- Capsule 발 영역 정확 기준 측정 → 정확한 절벽 거리
- 0.1m 간격 = 0.5m 미만 절벽도 검출
- 0.5m margin = 절벽 영역에서 0.5m 안전 영역까지 patrol → 실제 절벽 영역 도달 X
- BT102 텔레포트 영역 = 측정 영역 정확 시 X 트리거 → 시각상 자연 patrol
- 1회 측정 (Start) = 최적화 (매 frame 측정 X)
This commit is contained in:
깃 관리자 2026-05-08 15:20:03 +09:00
parent 725c7105e3
commit 64d30a165e
1 changed files with 5 additions and 3 deletions

View File

@ -133,14 +133,16 @@ namespace Platformer.Mechanics
_lastX = transform.position.x;
}
// BT103 — 정확 측정 (PD 명시 2026-05-08): Start 시점 1회 측정·간격 0.1m·Capsule 발 영역 정확
float MeasureSafeWalkDistance(float dir)
{
float groundY = transform.position.y - 0.34f; // 발 영역 위 0.05m (Capsule offset 영역 기반 추정)
for (float d = 0.5f; d <= patrolMaxRange; d += 0.5f)
if (_collider == null) return patrolMaxRange;
float groundY = _collider.bounds.min.y + 0.05f; // Capsule 발 영역 위 0.05m
for (float d = 0.1f; d <= patrolMaxRange; d += 0.1f)
{
Vector2 origin = new Vector2(_startX + dir * d, groundY);
RaycastHit2D hit = Physics2D.Raycast(origin, Vector2.down, cliffCheckDepth, groundLayerMask);
if (hit.collider == null) return Mathf.Max(0f, d - 1.5f);
if (hit.collider == null) return Mathf.Max(0f, d - 0.5f); // 안전 margin 0.5m
}
return patrolMaxRange;
}