日記 (2014 年 8 月 14 日)

マップとの判定が怪しくなっていることはもう言いましたが、 エンティティー同士の衝突判定も怪しいことが発覚しました。 もう、 アクションゲーム嫌い! いや、 悪いのはアクションゲームではなく、 頭の悪い私の方ですね。

さて、 衝突判定がおかしいのは、 どうやら浮動小数点数の計算誤差が原因だったようです。 エンティティーの座標を 1 フレームごとに調べたら、 なんと 5.8×1011 の誤差のせいで、 前後関係がずれて処理されていました。

座標を浮動小数点数で扱うことにしてから、 いつか誤差の問題が浮上するんじゃないかなと思ってたんですが、 ついに浮上しました。 放っておいた自分を責めたい、 というか、 なぜ問題が浮上することが分かっていて浮動小数点数を使ったんだ! まあ、 起こっても仕方ないので、 おとなしく固定小数点数の考え方で、 コードを書き直すことにします。

うーん