diff --git a/Assets/Scripts/Mechanics/EnemyController.cs b/Assets/Scripts/Mechanics/EnemyController.cs index 4f73d52..320dce0 100644 --- a/Assets/Scripts/Mechanics/EnemyController.cs +++ b/Assets/Scripts/Mechanics/EnemyController.cs @@ -113,13 +113,13 @@ namespace Platformer.Mechanics float moveDir = Mathf.Sign(dx); - // BT86 — 벽 정지·미세 밀림 검출 (PD 보고 2026-05-08): 임계값 거리 0.01→0.02 — 미세 밀림도 정지 인식 + // 벽 정지·미세 밀림 검출 — BT88: phase+2 (반대 방향 patrol·시작 위치 복귀 폐기) if (Mathf.Abs(transform.position.x - _lastX) < stuckMoveThreshold) { _stuckTimer += Time.deltaTime; if (_stuckTimer > stuckThresholdTime) { - _patrolPhase = (_patrolPhase + 1) % 4; + _patrolPhase = (_patrolPhase + 2) % 4; SetNextPatrolTarget(); dx = _targetX - transform.position.x; moveDir = Mathf.Sign(dx); @@ -136,9 +136,8 @@ namespace Platformer.Mechanics // BT83/BT84 영역 = bounds 외부+0.5m 영역도 옆 Tile (평지 인접) 검출 → 거짓 양성 → patrol X // 정정: 수평 Raycast 폐기 + stuckTimer 영역 0.5초 (BT81 영역 회복) — 벽 정지 시 다음 phase - // BT86 — 절벽 검출 (PD 보고 2026-05-08): 시작 위치 복귀 폐기·즉시 다음 phase 강제 - // 시작 위치도 절벽 가능 (낭떠러지 근처 생성 Enemy) → 시작 위치 복귀 시 떨어짐 - // 정정: 다음 phase 강제 = 반대 방향 patrol 시도 + // 절벽 검출 — BT88: phase+2 (반대 방향 patrol·시작 위치 복귀 폐기) + // 시작 위치 복귀 영역 = 시작 위치도 절벽 근처 시 도중 떨어짐 → phase+2로 즉시 반대 방향 if (Mathf.Abs(dx) > patrolArriveThreshold && _collider != null) { Vector2 footAhead = new Vector2( @@ -148,7 +147,7 @@ namespace Platformer.Mechanics RaycastHit2D groundHit = Physics2D.Raycast(footAhead, Vector2.down, cliffCheckDepth, groundLayerMask); if (groundHit.collider == null) { - _patrolPhase = (_patrolPhase + 1) % 4; + _patrolPhase = (_patrolPhase + 2) % 4; SetNextPatrolTarget(); dx = _targetX - transform.position.x; moveDir = Mathf.Sign(dx);