From eeb7ded8eebd1a9390b99b62fa30debab4ff67d6 Mon Sep 17 00:00:00 2001 From: swrring Date: Fri, 8 May 2026 12:34:43 +0900 Subject: [PATCH] =?UTF-8?q?BT5-Dev=20#88:=20Enemy=20=EC=A0=88=EB=B2=BD?= =?UTF-8?q?=C2=B7=EB=B2=BD=20=EA=B2=80=EC=B6=9C=20phase+2=20(=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=20=EC=9C=84=EC=B9=98=20=EB=B3=B5=EA=B7=80=20=ED=8F=90?= =?UTF-8?q?=EA=B8=B0=C2=B7=EC=A6=89=EC=8B=9C=20=EB=B0=98=EB=8C=80=20?= =?UTF-8?q?=EB=B0=A9=ED=96=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PD 보고 (2026-05-08): "이번에는 몬스터들이 다시 낭떠러지로 떨어져버렸어 (이전 버전은 떨어지지 않음)" 진단: - BT86 절벽 검출 = phase+1 (= 시작 위치 복귀) - BT87 patrol 거리 절반 (50~75) → 시작 위치 ↔ 절벽 거리 작아짐 - 시작 위치 복귀 도중 = 절벽 영역 도달 → 떨어짐 정정 (BT88): - 절벽 검출 시: phase+2 (반대 방향 patrol·시작 위치 복귀 폐기) - 벽 정지(stuckTimer) 시: phase+2 (동일·즉시 반대 방향) phase 전환 영역: - phase 0 (우측 out) → phase 2 (좌측 out) - phase 1 (시작 복귀·우측에서) → phase 3 (시작 복귀·좌측에서) - phase 2 (좌측 out) → phase 0 (우측 out) - phase 3 (시작 복귀·좌측에서) → phase 1 (시작 복귀·우측에서) 효과: - 절벽 영역 = 즉시 반대 방향 patrol (시작 위치 영역 X) - 벽 충돌 = 동일 (즉시 반대 방향) - 시작 위치 절벽 근처 영역 = 안전 --- Assets/Scripts/Mechanics/EnemyController.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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);