私は、アバターが常にマウスカーソルを指すように回転することに依存するトップダウンシューティングゲームを作成しています。私はこのような回転を達成します:
//Rendering.
context.save(); //Save the context state, we're about to change it a lot.
context.translate(position[0] + picture.width/2, position[1] + picture.height/2); //Translate the context to the center of the image.
context.rotate(phi); //Rotate the context by the object's phi.
context.drawImage(picture.image, -picture.width/2, -picture.height/2); //Draw the image at the appropriate position (center of the image = [0, 0]).
context.restore(); //Get the state back.
がゼロの場合phi
、画像は通常の品質でレンダリングされ、鋭いエッジと検出可能なピクセルが含まれます。ただし、をphi
ゼロ以外の値に設定すると(実際には、、、、、または)でない場合、画像の0
鮮明さが失われ、個々のピクセルがぼやけて表示されなくなります。Pi/2
Pi
Pi+Pi/2
2Pi
これがスクリーンショットです(スクリーンショットの一般的な品質の悪さについては申し訳ありませんが、違いは目立つ以上のものだと思います):
これは、まあ、少し受け入れられません。いつも画像がぼやけてしまうわけではありません!なぜこれが起こっているのですか、それを解決できますか?