Dopo aver aggiunto velocità al mio gioco, mi sento come se le mie trame si contorcessero. Pensavo fossero solo i miei occhi, fino a quando non l'ho finalmente catturato in uno screenshot:
Quello a sinistra è ciò che rende nel mio gioco; quello a destra è lo sprite originale, incollato sopra. (Questo è uno screenshot di Photoshop, ingrandito 6x.)
Si noti che i bordi sono aliasing: sembra quasi un rendering sub-pixel. In effetti, se non avessi costretto i miei sprite (che hanno posizione e velocità come ints) a disegnare usando valori interi, giurerei che MonoGame sta disegnando con valori in virgola mobile. Ma non lo è.
Quale potrebbe essere la causa di queste cose che appaiono sfocate? Non succede senza la velocità applicata.
Per essere precisi, la mia SpriteComponent
classe ha un Vector2 Position
campo. Quando chiamo Draw
, essenzialmente uso new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
per la posizione.
Prima avevo un bug in cui anche gli oggetti fissi si muovevano, ciò era dovuto al fatto che usavo il Position
vettore dritto e non arrotondavo i valori ints
. Se uso Floor
/ Ceiling
invece di arrotondare, lo sprite affonda / sorvola (una differenza di pixel in entrambi i modi) ma disegna comunque sfocato.