[BT31-StartHit] 출력 0건 진단:
1. PlatformDropThrough 부착 X 또는 Awake/Start 호출 X
2. Start raycast 거리 0.5m 이내 발판 X (Player 시작 위치 발판 멀리)
진단 영역:
- Awake: [BT32-DropThrough] self/ko/mask 출력
- Start: [BT32-DropThrough] Start called + raycast 결과 출력
- hit Layer 8: [BT32-StartHit] dist·platform name·layer
- miss: [BT32-StartHit] no Layer 8 + 모든 Layer raycast로 anyHit 출력
- raycast 거리 무한대 (Mathf.Infinity)
[BT30-Collide] name='Level' layer=0 — Player 충돌 GameObject = Level Tilemap 확정.
PD 의도 = Level Tilemap 영역 전체 Drop-Through (점프 시 통과 + 하강 시 Raycast 착지)
본 PM 자인 (BT28 떨어짐 원인):
- Raycast 거리 0.1m 너무 짧음 → velocity 빠른 하강 시 miss
- 시작 시 즉시 활성 X → Player 시작 위치 발판 영역 통과 = 떨어짐
정정:
- GameOptimizer: TilemapCollider2D 제외 영역 폐기 → Level Tilemap도 Layer 8 변환
- PlatformDropThrough.Start: 시작 시 즉시 1회 raycast → Player 시작 위치 발판 영역 충돌 활성 (떨어짐 차단)
- PlatformDropThrough.Update: footRayDistance 0.1 → 0.5 + velocity 기반 동적 거리 (Mathf.Max + |vy|*deltaTime + 0.1)
동작:
- 시작 시 [BT31-StartHit] 출력 + Player 발판 위 정상 정착
- 점프 시 IgnoreCollision(true) 복구 = 통과
- 하강 시 raycast hit → IgnoreCollision(false) = 착지