From dd44085c3be516c3c7c8de48efd5ea9bc093c3d0 Mon Sep 17 00:00:00 2001 From: swrring Date: Fri, 8 May 2026 00:30:24 +0900 Subject: [PATCH] =?UTF-8?q?BT5-Dev=20#71:=20Drop-Through=20velocity.y=3D0?= =?UTF-8?q?=20=E2=86=92=20-0.5=20=EC=A0=95=EC=A0=95=20(=EC=A0=90=ED=94=84?= =?UTF-8?q?=ED=82=A4=20=EC=9E=A0=EA=B8=88=20=EB=B2=84=EA=B7=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PD 보고 (2026-05-08): "아래로 점프 시도 한 다음부터 점프키가 동작하지 않는 현상" 근본 원인: - BT69 ComputeVelocity dropThroughJump 분기: velocity.y = 0 - velocity.y = 0 + 발판 위 IsGrounded=true 잔존 시: → KinematicObject FixedUpdate에서 IsGrounded 갱신 시 발판 통과 전 잔존 가능 → jumpState = Jumping 영역에 IsGrounded=true → InFlight 전환 조건 X → jumpState = Jumping 영구 잔존 - Update §145: jumpState == Grounded 조건만 점프 입력 수용 → 점프 입력 영구 무시 정정 (1행): - velocity.y = 0f → -0.5f - 즉시 낙하 시작 → IsGrounded=false 확보 - Jumping → InFlight → 착지 → Landed → Grounded 정상 사이클 - 점프 입력 정상 수용 효과: - Drop-Through (Down + Jump 발판 위) 후 → 발판 통과 + 자연 낙하 + 다른 영역 착지 - 착지 후 점프 입력 정상 수용 (Grounded 영역 도달) - 점프 모션 그대로 (jumpState = PrepareToJump → Jumping → InFlight → Landed → Grounded) 후속 의무: - PD Refresh+Play 시각 검증 (Drop-Through 후 점프키 정상 작동) - 정합 시 BT69+BT70+BT71 Drop-Through Input 영구 채택 --- Assets/Scripts/Mechanics/PlayerController.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/Mechanics/PlayerController.cs b/Assets/Scripts/Mechanics/PlayerController.cs index d4af670..342a457 100644 --- a/Assets/Scripts/Mechanics/PlayerController.cs +++ b/Assets/Scripts/Mechanics/PlayerController.cs @@ -258,9 +258,12 @@ namespace Platformer.Mechanics if (jump && IsGrounded) { // BT69 — Drop-Through 점프 분기: Down + Jump 입력 시 위로 점프 X (gravity로 떨어짐 + 점프 모션만 유지) + // BT71 — velocity.y = 0 → 음수(-0.5) 정정 (PD 보고 2026-05-08: Drop-Through 후 점프키 X 버그) + // 원인: velocity.y=0 시 IsGrounded=true 잔존 → jumpState=Jumping 영구 → 점프 입력 무시 + // 정정: 즉시 떨어짐 → IsGrounded=false → Jumping→InFlight→착지→Grounded 정상 사이클 if (dropThroughJump) { - velocity.y = 0f; // 위 속도 X — 발판 통과 후 자연 낙하 + velocity.y = -0.5f; // 즉시 낙하 시작 — 발판 통과 + IsGrounded=false 확보 dropThroughJump = false; } else