Po dodaniu prędkości do mojej gry, czuję, że moje tekstury drżą. Myślałem, że to tylko moje oczy, aż w końcu uchwyciłem to na zrzucie ekranu:
Ten po lewej jest tym, co renderuje się w mojej grze; ten po prawej to oryginalny duszek, wklejony. (To jest zrzut ekranu z Photoshopa, powiększony 6x.)
Zauważ, że krawędzie są aliasingowe - wygląda prawie jak renderowanie subpikseli. W rzeczywistości, gdybym nie zmusił moich duszków (które mają pozycję i prędkość jako liczby całkowite) do rysowania przy użyciu wartości całkowitych, przysięgałbym, że MonoGame rysuje z wartościami zmiennoprzecinkowymi. Ale tak nie jest.
Co może być przyczyną rozmycia tych rzeczy? Nie dzieje się to bez zastosowania prędkości.
Mówiąc ściślej, moja SpriteComponent
klasa ma Vector2 Position
pole. Kiedy dzwonię Draw
, zasadniczo używam new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
stanowiska.
Miałem wcześniej błąd, w którym drgałyby nawet obiekty stacjonarne - to dlatego, że użyłem prostego Position
wektora i nie zaokrąglałem wartości ints
. Jeśli użyję Floor
/ Ceiling
zamiast okrągłej, duszek tonie / unosi się (różnica o jeden piksel w jedną stronę), ale nadal rysuje się rozmazany.