Skip to content

静止時速度のアーティファクト修正

このページでは、ブロック上静止時に発生していた 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}$ となります。


🔗 関連ページ

Official documentation & web portal for Dasik Igaijinn mods.