PD 명시 (2026-05-08): "발판과 같이 아래가 뚫려있고 이동 가능한 영역이 있는 경우, 아래 방향키 상태로 점프하면 점프 모션과 함께 내려올 수 있도록"
표준 platformer 패턴 (Drop-Through Input):
- Player가 발판(Layer 16) 위 + Down 방향키 + Jump 키 동시 입력
- = Layer 16 mask 강제 OFF (DROP_THROUGH_DURATION=0.3초) → 발판 통과
- = velocity.y = 0 (위 점프 X·gravity로 자연 낙하)
- = jumpState = PrepareToJump (점프 애니메이션 발동·시각상 점프 모션)
변경 (PlayerController.cs 3영역):
1. 클래스 변수 추가:
- float dropThroughTimer (Layer 16 mask 강제 OFF 지속 시간)
- const float DROP_THROUGH_DURATION = 0.3f
- bool dropThroughJump (본 frame Drop-Through 점프 발동 분기)
2. Update 영역:
- Move Input 영역 y < -0.5 (Down) + Jump WasPressed → dropThroughTimer 활성 + dropThroughJump=true
- 매 frame dropThroughTimer 감소 (Time.deltaTime)
3. UpdateContactFilterForDropThrough 영역:
- isJumpingThrough 조건에 dropThroughTimer > 0 추가
- Drop-Through 활성 시 Layer 16 mask 강제 OFF
4. ComputeVelocity 영역:
- jump && IsGrounded 시 dropThroughJump 분기:
- dropThroughJump → velocity.y = 0 (위 점프 X)
- else → velocity.y = jumpTakeOffSpeed (기존 정상 점프)
효과 (PD 의도 정합):
- 일반 점프 (Jump only) = 위로 점프 (그대로)
- Drop-Through (Down + Jump) = 발판 통과 + 점프 모션 + 자연 낙하
- 0.3초 후 mask 자동 복원 (다른 발판 위 정상 착지 가능)
후속 의무:
- PD Refresh+Play 시각 검증 (발판 위 + Down + Jump → 통과·낙하 + 점프 애니메이션)
- 정합 시 BT49~BT65 영구 폐기 + R2 + BT68 + BT69 영역 영구 채택
|
||
|---|---|---|
| .. | ||
| Core | ||
| Gameplay | ||
| Mechanics | ||
| Model | ||
| MyUI | ||
| UI | ||
| View | ||
| Core.meta | ||
| Gameplay.meta | ||
| Mechanics.meta | ||
| Model.meta | ||
| MyUI.meta | ||
| UI.meta | ||
| View.meta | ||