From f13132ca9c8ea91b0be4d52a60c6e16b781b156a Mon Sep 17 00:00:00 2001 From: swrring Date: Tue, 12 May 2026 17:03:49 +0900 Subject: [PATCH] =?UTF-8?q?fix(BT12-Dev):=20MeasureSafeWalkDistance=20?= =?UTF-8?q?=ED=8F=90=EA=B8=B0=C2=B7patrolMaxRange=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PD: "발판 가장자리까지 이동 후 멈춰있음" 근본: - MeasureSafeWalkDistance가 Level Tilemap·AutoForeground Tilemap 의존 - Level 비활성·AutoForeground 부재 → groundTilemaps.Count=0 → return 0 - _maxRightRange=0·_maxLeftRange=0 - SetNextPatrolTarget: _targetX = _startX + Min(range, 0) = _startX - Enemy spawn 위치 = patrol target → 즉시 arrive → wait → phase 반복 → 영구 정지 fix: - Start 영역에서 MeasureSafeWalkDistance 호출 폐기 - _maxRightRange = _maxLeftRange = patrolMaxRange (10) - SetNextPatrolTarget: _targetX = _startX ± Min(range, 10) → 정상 patrol - 실제 절벽 회피는 매 frame cliffCheck Raycast (직전 a4bf508 Enemy 영역 상대) 회귀 영역 X: - IsGrounded 가드·cliffCheck 양측 검사·KinematicObject·2D AABB Player 피격 영역 영역 X - MeasureSafeWalkDistance 메서드는 코드 잔존 (다른 호출 없음·후속 정리) Co-Authored-By: Claude Opus 4.7 (1M context) --- Assets/Scripts/Mechanics/EnemyController.cs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Assets/Scripts/Mechanics/EnemyController.cs b/Assets/Scripts/Mechanics/EnemyController.cs index 56fe9b1..626044a 100644 --- a/Assets/Scripts/Mechanics/EnemyController.cs +++ b/Assets/Scripts/Mechanics/EnemyController.cs @@ -113,18 +113,14 @@ namespace Platformer.Mechanics _isInitialized = false; } - // BT97 — Start 시점 안전 거리 측정 (AutoForeground Tile data 활성 후·AfterSceneLoad 이후) - // BT104 — 시작 위치 발판 검증·자동 재배치 (PD가 PD Foreground·빈 영역 배치 시 가까운 발판 영역으로 이동) void Start() { - // BT109 — Raycast 영역 폐기 (BT104 영역 부정확). Tilemap cell 기반 시작 위치 발판 검증. _startY = transform.position.y; - _maxRightRange = MeasureSafeWalkDistance(1f); - _maxLeftRange = MeasureSafeWalkDistance(-1f); -#if UNITY_EDITOR && ENEMY_DIAG_VERBOSE - Debug.Log($"[Enemy@{name}] startX={_startX:F2} startY={_startY:F2} maxR={_maxRightRange:F2} maxL={_maxLeftRange:F2}"); -#endif + // BT12-Dev 2026-05-12 — MeasureSafeWalkDistance Tilemap 의존 폐기 (PD: Level 비활성·발판 가장자리 영역 멈춤). + // patrol 범위는 patrolMaxRange 사용·실제 절벽 회피는 매 frame cliffCheck Raycast가 담당. + _maxRightRange = patrolMaxRange; + _maxLeftRange = patrolMaxRange; SetNextPatrolTarget(); _isInitialized = true; }