Setelah menambahkan kecepatan ke permainan saya, saya merasa seperti tekstur saya berkedut. Saya pikir itu hanya mata saya, sampai akhirnya saya menangkapnya dalam tangkapan layar:
Yang di sebelah kiri adalah apa yang merender dalam game saya; yang di sebelah kanan adalah sprite asli, ditempelkan. (Ini adalah tangkapan layar dari Photoshop, diperbesar 6x.)
Perhatikan ujungnya alias - hampir seperti rendering sub-pixel. Bahkan, jika saya tidak memaksa sprite saya (yang memiliki posisi dan kecepatan sebagai ints) untuk menggambar menggunakan nilai integer, saya bersumpah bahwa MonoGame sedang menggambar dengan nilai floating point. Tapi ternyata tidak.
Apa yang bisa menjadi penyebab hal-hal ini tampak buram? Itu tidak terjadi tanpa kecepatan diterapkan.
Lebih tepatnya, SpriteComponent
kelas saya memiliki Vector2 Position
bidang. Ketika saya menelepon Draw
, pada dasarnya saya gunakan new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
untuk posisi itu.
Saya punya bug sebelum di mana bahkan objek stasioner akan gugup - itu karena saya menggunakan Position
vektor lurus dan tidak membulatkan nilai ints
. Jika saya menggunakan Floor
/ Ceiling
bukannya bulat, sprite tenggelam / melayang (perbedaan satu pixel bagaimanapun juga) tetapi masih menarik buram.