Некоторое время назад я упоминал, что мы потратили некоторое время на доведение игрового пикселя до совершенства. Нам пришлось это сделать, чтобы наша красивая 2D-игра с пиксельной графикой хорошо смотрелась в любом разрешении. Мы также не хотели, чтобы объекты перемещались или приземлялись на половину пикселя.

По умолчанию Unity не показывает Pixel Art идеально, поэтому нам нужно кое-что изменить и внести небольшое исправление. Но не волнуйтесь, это несложно.

Заявление об ограничении ответственности: все это руководство основано на нескольких источниках, но в основном на этой замечательной ветке твиттера. Я также знаю, что есть и другие способы сделать это, вероятно, лучше и оптимальнее, но именно этот я использую после многих исследований.

Давайте посмотрим, что нужно сделать, чтобы добиться этого изображения Pixel Perfect.

Отключить сглаживание

Сглаживание используется в видеоиграх для сглаживания границ текстур. Обычно вы хотите, чтобы это было включено, чтобы ваша текстура не выглядела «слишком пиксельной», а вместо этого была гладкой на экране. Вот пример того, что делает сглаживание:

Нижняя линия сглажена и расплывчата. Это будет выглядеть нормально, если мы увидим его в меньшем разрешении, чем это. Мы заметим пиксельные границы, если не активируем сглаживание.

В нашем случае мы как раз хотим иметь противоположное, поэтому нам нужно отключить сглаживание. В Unity он активирован по умолчанию.

Перейдите в Изменить - ›Настройки проекта -› Качество и установите для Сглаживание значения Отключено.

Имейте в виду, что может быть несколько уровней качества. На моем изображении есть очень низкий, низкий, средний, высокий, очень высокий и ультра. Вам нужно щелкнуть по каждому из них и изменить настройку сглаживания на Отключено во всех из них.

Настройки импорта спрайтов

Когда вы импортируете изображение / текстуру, Unity по умолчанию устанавливает некоторые фильтры, чтобы сгладить их при отображении на экране. Опять же, это может быть хорошей идеей для других игр, но не для игр с пиксельной графикой.

Вам нужно перейти к каждому спрайту, который у вас есть в проекте, и изменить эти настройки в инспекторе:

Измените Режим фильтра на Точка (без фильтра) и отключите Сжатие (измените его на Нет, как на изображении). Опять же, это нужно сделать для каждого спрайта, который есть в игре.

Пикселей на единицу (PPU)

Вы также можете найти этот параметр в настройках импорта спрайтов. По умолчанию 100. Измените его на размер вашей плитки в пикселях (например, в нашем случае у нас есть плитки 19x19).

Это будет актуально также для следующего, что нам нужно изменить.

Ортографический размер камеры

Теперь, когда мы настроили наш PPU, нам нужно указать камере, насколько большой мы хотим, чтобы она была основана на этом PPU, чтобы один пиксель на экране соответствовал одному пикселю в нашей игре.

Чтобы получить такой размер, нам просто нужно выполнить простую формулу:

Ортографический размер камеры = разрешение по вертикали / PPU / 2

Когда у вас будет такой размер, щелкните объект Основная камера и введите это значение в настройку размера:

В нашем случае у нас 180 пикселей как вертикальное разрешение и 19 пикселей PPU, поэтому:

180 / 19 / 2 = 4.73684

Важно отметить, что в нашем случае мы рендерим все в крошечном разрешении, а позже масштабируем. Не ставьте желаемое разрешение по вертикали (в нашем случае 720p), а то, которое вы рендерируете.

Скрипт привязки к сетке

Это последний шаг к тому, чтобы он выглядел идеально в пикселях. Пока что он больше не должен выглядеть размытым, но у нас все еще есть проблема, заключающаяся в том, что ваши объекты могут быть размещены в «половинных» пикселях из-за увеличения разрешения.

Есть разные способы избежать этого, например, использовать специальный плагин для 2D-камеры или шейдеры. Они, вероятно, более эффективны, чем то, что я использую, но я считаю их более сложными, чем этот метод.

Идея состоит в том, что вы помещаете скрипт, который подстраивает ваш объект под вашу «сетку плиток» в LastUpdate ().

Для этого вам нужно переместить средство визуализации спрайтов в дочерний объект и добавить туда этот скрипт.

Вот сценарий, который я использую:

Он проверяет родительскую позицию и округляет ее, чтобы она была в сетке. Так что больше никакого движения на полпикселя!

Со всеми этими настройками ваша игра уже должна выглядеть нормально. Надеюсь, это поможет кому-нибудь еще настроить Unity для игр с пиксельной графикой.