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:
parent
725c7105e3
commit
64d30a165e
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue