Это связано с тем, что вы не воспроизводите изображение «безупречно», что означает, что ваше изображение не совпадает с пиксельной сеткой вашего монитора.Быстрое решение может состоять в том, чтобы установить линейный фильтр для ваших текстур, так как по умолчанию он использует ближайший и, таким образом, пиксель на экране унаследует самый близкий цвет, который он может получить.Линейный фильтр интерполирует цвета и делает эту линию «более тонкой».
texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
Если вы используете texturepacker, вы можете сделать это за один раз, изменив его настройки.
texturePackerSetting.filterMin = Texture.TextureFilter.Linear;
texturePackerSetting.filterMag = Texture.TextureFilter.Linear;
Или вы можете отредактировать сам файл атласа, изменив параметр фильтра на:
filter: Linear,Linear
Очевидно, что это стоит больше энергии, поскольку для каждого пикселя, который вы рисуете на экране, требуется больше вычислений, но я бы не волновалсяоб этом, пока ваш рисунок не станет узким местом.
Другим решением является рисование безупречного пикселя, что означает, что вам нужно установить размер окна просмотра на размер устройства gdx.graphics.getWidth
, gdx.graphics.getHeight
, другими словами a ScreenViewport
и рисовать текстуры с точными размерами, которые выхочу их.Конечно, это означает, что экран с большим количеством пикселей видит больше вашего игрового мира, чем экран с меньшим количеством пикселей, и чем больше пикселей у устройства, тем меньше будут выглядеть ваши текстуры.Другим недостатком этого является то, что вы должны забыть о масштабировании или рисовании спрайтов для каждого уровня масштабирования, чтобы они снова совпали с пиксельной сеткой устройства.