BT5-Dev #37: 점프+Player 위(transform.y) 단순 조건 (PD 의도 정확 — '점프 후 밟을 때 통과' 차단)

PD 보고: '점프 후 밟을 때 통과된다는 의미였어'

진단:
- footHeadDelta 좁은 영역(-0.3~0.05) → 빠른 떨어짐 한 프레임 안 miss → stomped=False
- !IsGrounded(점프 상태) 측면 차단 → Player 그냥 통과 → 밟기 발동 X

정정 (단순 조건 — footHeadDelta 정확 영역 폐기):
- inAir(!IsGrounded) && playerAbove(player.y > enemy.y) → 무조건 밟기
- inAir + 옆·아래 → 피해 차단
- 지상 → 피해(i-frame)

Player.y > Enemy.y 단순 조건 = 점프 후 떨어지는 어떤 시점에도 catch 가능
This commit is contained in:
깃 관리자 2026-05-07 18:04:08 +09:00
parent 7de7025648
commit 2b345d929c
1 changed files with 9 additions and 7 deletions

View File

@ -36,22 +36,24 @@ namespace Platformer.Gameplay
{ {
if (player == null || player.health == null || enemy == null) return; if (player == null || player.health == null || enemy == null) return;
// BT5-Dev #25 — Player 발이 Enemy 머리 영역 영역 영역 영역 발동 (footHeadDelta 영역 영역 영역 영역) // BT5-Dev #37 — PD 의도 정확 반영: 점프 상태(공중) + Player.y > Enemy.y = 무조건 밟기
bool stomped = dyAtCollision > STOMP_DELTA_MIN && dyAtCollision < STOMP_DELTA_MAX; // footHeadDelta 좁은 영역(-0.3~0.05) 빠른 떨어짐 한 프레임 miss → 점프+위 단순 조건으로 catch 보장
bool inAir = !player.IsGrounded;
bool playerAbove = player.transform.position.y > enemy.transform.position.y;
Debug.Log($"[PEC] stomped={stomped} delta={dyAtCollision:F2} (range {STOMP_DELTA_MIN}~{STOMP_DELTA_MAX}) pInvuln={player.health.IsInvulnerable}"); Debug.Log($"[PEC] inAir={inAir} above={playerAbove} delta={dyAtCollision:F2} pY={player.transform.position.y:F2} eY={enemy.transform.position.y:F2}");
if (stomped) if (inAir && playerAbove)
{ {
// 점프 + Enemy 위 = 밟기 (Bounce + EnemyDeath)
Schedule<EnemyDeath>().enemy = enemy; Schedule<EnemyDeath>().enemy = enemy;
player.Bounce(player.jumpTakeOffSpeed / 3f); player.Bounce(player.jumpTakeOffSpeed / 3f);
return; return;
} }
// BT5-Dev #35 — 점프 상태(공중) 측면 충돌 시 피해 X 방어 코드 (PD 지시) if (inAir)
if (!player.IsGrounded)
{ {
Debug.Log($"[PEC] 점프 상태 측면 충돌 영역 피해 차단 (delta={dyAtCollision:F2})"); // 점프 + Enemy 옆·아래 = 피해 차단 (방어 코드)
return; return;
} }