Sau khi thêm vận tốc vào trò chơi của tôi, tôi cảm thấy như kết cấu của mình đang co giật. Tôi nghĩ rằng đó chỉ là đôi mắt của tôi, cho đến khi cuối cùng tôi đã chụp được nó trong một ảnh chụp màn hình:
Người bên trái là những gì tái hiện trong trò chơi của tôi; cái bên phải là bản gốc, được dán. (Đây là ảnh chụp màn hình từ Photoshop, được phóng to 6 lần.)
Lưu ý các cạnh là răng cưa - nó trông gần giống như hiển thị pixel phụ. Trong thực tế, nếu tôi không buộc các họa tiết của mình (có vị trí và vận tốc là int) vẽ bằng các giá trị nguyên, tôi sẽ thề rằng MonoGame đang vẽ với các giá trị dấu phẩy động. Nhưng nó không phải là.
Điều gì có thể là nguyên nhân của những điều này xuất hiện mờ? Nó không xảy ra mà không áp dụng vận tốc.
Nói chính xác, SpriteComponent
lớp tôi có một Vector2 Position
lĩnh vực. Khi tôi gọi Draw
, tôi chủ yếu sử dụng new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
cho vị trí này.
Tôi đã có một lỗi trước khi các đối tượng đứng yên thậm chí sẽ bị giật - đó là do tôi sử dụng Position
vectơ thẳng và không làm tròn các giá trị ints
. Nếu tôi sử dụng Floor
/ Ceiling
thay vì tròn, sprite chìm / dao động (một pixel khác nhau theo cách nào đó) nhưng vẫn vẽ mờ.