BT5-Dev #98: R1 방어 영역 — 발 자체 검사·시작 위치 텔레포트 복귀
PD 강한 어조 (2026-05-08): "여전히 몬스터가 낭떠러지로 떨어져" 본 PM 17회 가설 누적 부정확 자인. R1 방어 영역 즉시 적용: 매 frame Update 영역 마지막에 발 영역 자체 절벽 검사: - footHere = (_collider.bounds.center.x, _collider.bounds.min.y + 0.05f) - Raycast Layer 0+16 cliffCheckDepth 영역 - groundUnder.collider == null 시 = 발 영역 자체 절벽 - 시작 위치 텔레포트 즉시 복귀: - transform.position + body.position 동시 set - control.velocity = Vector2.zero (낙하 차단) - patrolPhase = 0, SetNextPatrolTarget, cooldown 활성, waitTimer 1~3초 효과: - 본 PM 알고리즘 영역 부정합 잔존 시도 = 떨어짐 검출 즉시 시작 위치 복귀 - 영구 떨어짐 X 보장 (방어 영역) - 시작 위치 = 안전 영역 가설 (PD가 Enemy 영역 발판 위 배치) 후속 의무: - PD Refresh+Play 시각 검증 (떨어짐 차단 정합)
This commit is contained in:
parent
e701829356
commit
b3cbbdbf40
|
|
@ -250,6 +250,28 @@ namespace Platformer.Mechanics
|
|||
// BT89 — 자동 patrol + 즉시 벽 검출 + 1~3초 대기 영역
|
||||
UpdatePatrol();
|
||||
|
||||
// BT98 — 방어 영역 (R1·PD 강한 어조 정합): 발 영역 자체 절벽 검사 → 시작 위치 즉시 텔레포트 복귀
|
||||
// 본 PM 17회 가설 누적 부정확. 알고리즘 영역 부정합 잔존 시도 안전 보장.
|
||||
if (_isInitialized && _collider != null)
|
||||
{
|
||||
Vector2 footHere = new Vector2(_collider.bounds.center.x, _collider.bounds.min.y + 0.05f);
|
||||
RaycastHit2D groundUnder = Physics2D.Raycast(footHere, Vector2.down, cliffCheckDepth, groundLayerMask);
|
||||
if (groundUnder.collider == null)
|
||||
{
|
||||
Vector3 safe = new Vector3(_startX, transform.position.y, transform.position.z);
|
||||
transform.position = safe;
|
||||
if (_body != null) _body.position = safe;
|
||||
if (control != null) control.velocity = Vector2.zero;
|
||||
_patrolPhase = 0;
|
||||
SetNextPatrolTarget();
|
||||
_phaseCooldown = PHASE_COOLDOWN;
|
||||
_stuckTimer = 0f;
|
||||
_lastX = _startX;
|
||||
_waitTimer = Random.Range(waitMinTime, waitMaxTime);
|
||||
if (control != null) control.move.x = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
// 이하 — Player 충돌 검출 영역 (patrol 영역과 분리)
|
||||
|
||||
// PD 지시 2026-05-07 — Player ↔ Enemy 통과 가능이지만 Bounds.Intersects로 매 프레임 감지
|
||||
|
|
|
|||
Loading…
Reference in New Issue