キャンバス要素にスプライトをレンダリングしています。ぼやけた画像を避けるために、サブピクセルの配置を避けようとしています (ここの情報に基づく: http://seb.ly/2011/02/html5-canvas-sprite-最適化/ )。
次のように x 位置を再割り当てしようとすると、私の問題が発生します。
this.pos.x = ~~ this.pos.x;
これにより、スプライトが画面上で動かなくなり、その位置をコンソールに記録すると、開始位置で動かなくなっていることがわかります。
ここで、自分の位置でビット単位の演算子を実行せず、単に出力をログに記録すると:
console.log(~~ this.pos.x);
ビット単位の演算子が期待どおりに実行されていることがわかります。次のように表示されます。
100
101
102
...
注: 私のアニメーションはフレームレートに依存しないため、デルタを掛けて次のようなフロートを取得しています。
100.64
101.36
102.04
102.68
103.32000000000001
104.00000000000001
104.68000000000002
...
ここで位置を更新しますが、ここでのみ:
this.pos.x += BE.delta.getSeconds() * this.accelleration;
したがって
this.pos.x += ~~ (BE.delta.getSeconds() * this.accelleration);
動かない