【enchant.js】Mapの座標に小数が入ると表示が崩れる

個人的にenchant.jsの最大の長所はMapクラスで当たり判定までやってくれることだと思う。
他のゲーム用ライブラリでもMapクラスはあるけどそこまではやってくれない。

そんな便利なMapクラスですが
最近使ったら表示がおかしくなってしまったので
原因を調べたら、座標に小数が入るダメってことが分かったのでメモ。

実験:Mapをちょっとずつ動かしてみる

enchant.js公式のサンプルコードをちょっと弄ります。
こんな感じ。

map.on('enterframe', function() {
    map.y += 0.1;// 少しずつ動かす
})

実行結果はこちら

変な線がでるーーーーー。。

以前から小数が入るとドットがにじんだりして
モヤモヤした気分になることがあったんだけど
ここまで致命的な表示崩れはなかったと思うんだけどなぁ。
最近のブラウザのアップデートでこうなったような気がする。。

解決策:小数をなくす

基本的に小数を無くして
整数にしてあげればいいんだけど
物理エンジンとか使ってると整数で計算するのは厳しい。

なので物理エンジンの計算用変数を別途用意しておきます。

map.realY = 0.0;// 計算用変数
map.on('enterframe', function() {
    map.realY += 0.1;// 少しずつ動かす
    map.y = Math.floor(map.realY);// 整数化
})

めでたし。めでたし。