지상 정지 상태 속도 수정
이 페이지에서는 블록 위 정지 상태에서 발생하던 1.57 m/s 잔류 중력 표시 오류 해결 과정을 설명합니다.
📊 지면 정지 속도 수정 정보 상자
| 비교 항목 | 레거시 구현 (v1.0.0) | 최신 구현 (v1.1.0+) |
|---|---|---|
| 물리 계산 방식 | 커스텀 위치 차분 ($\Delta p = p_t - p_{t-1}$) | 바닐라 Entity.getKnownSpeed() API |
| 정지 상태 속도 문제 | 중력 리셋으로 인해 $1.57\text{ m/s}$ 오표시 | 정지 상태에서 완벽하게 $0.00\text{ b/s}$ 표시 |
| 지면 감지 | 임시 블록 충돌 검사 | Minecraft 네이티브 속도 벡터 관리 |
| 정확도 | 틱 반올림 오류 발생 가능 | 바닐라 물리와 100% 일치하는 정밀성 |
🛠 문제 원인 및 해결책 분석
레거시 정지 아티팩트
초기 버전(v1.0.0)에서는 연속 프레임 간 좌표 감산 방식으로 속도를 계산하여 지면에 서 있을 때도 Minecraft가 지속적으로 하향 속도($v_y \approx -0.0784$)를 재설정하여 움직임($1.57\text{ m/s}$)으로 잘못 표시되는 문제가 있었습니다.
해결책: 네이티브 getKnownSpeed() 통합
v1.1.0부터 Speedometer는 커스텀 좌표 차분 계산을 폐기하고 Minecraft의 네이티브 Entity.getKnownSpeed() API를 사용합니다:
java
Vec3 knownSpeed = entity.getKnownSpeed();정지 상태의 플레이어는 정확히 $(0.00, 0.00, 0.00)$를 반환하여 완벽한 $0.00\text{ b/s}$를 출력합니다.
