Після додавання швидкості до своєї гри я відчуваю, що мої текстури смикаються. Я думав, що це лише мої очі, поки я нарешті не зафіксував це на скріншоті:
Ліворуч - це те, що відображається в моїй грі; праворуч - оригінал спрайта, обклеєний. (Це скріншот із Photoshop, збільшений у 6 разів.)
Помітьте, що краї зведені - це виглядає майже як піксельне візуалізація. Насправді, якби я не змусив своїх спрайтів (які мають позицію та швидкість як інти) малювати за допомогою цілих значень, я б поклявся, що MonoGame малює зі значеннями з плаваючою комою. Але це не так.
Що може бути причиною того, що ці речі з’являються розмитими? Це не відбувається без застосованої швидкості.
Якщо бути точним, у мого SpriteComponent
класу є Vector2 Position
поле. Коли я телефоную Draw
, я по суті використовую new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
для позиції.
Я мав помилку раніше, коли навіть стаціонарні об'єкти будуть тремтіти - це було через те, що я використовував прямий Position
вектор і не округляв значення до ints
. Якщо я використовую Floor
/ Ceiling
замість круглої, спрайт тоне / наближається (одна різниця в пікселях в будь-якому випадку), але все одно малює розмитою.