ゲームにベロシティを追加した後、テクスチャがぴくぴく動いているように感じます。最終的にスクリーンショットでキャプチャするまで、それは私の目だと思いました。
左側はゲームでレンダリングするものです。右側は元のスプライトを貼り付けたものです。(これは6倍に拡大したPhotoshopのスクリーンショットです。)
エッジがエイリアシングしていることに注意してください。サブピクセルレンダリングのように見えます。実際、整数値を使用して描画するように私のスプライト(intとして位置と速度を持っている)を強制しなかった場合、MonoGameが浮動小数点値で描画していることを誓います。しかし、そうではありません。
これらがぼやけて表示される原因は何ですか?速度を適用しないと発生しません。
正確には、私のSpriteComponent
クラスにはVector2 Position
フィールドがあります。を呼び出すときDraw
、私は基本的new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
にポジションに使用します。
以前、静止オブジェクトでさえジッターするバグがありPosition
ましたints
。これは、直線ベクトルを使用し、値をに丸めなかったためです。ラウンドの代わりにFloor
/ を使用するCeiling
と、スプライトはシンク/ホバーします(いずれの方法でも1ピクセルの違いがあります)が、ぼやけて描画されます。