февраль 3, 2021

Car Customization

Добавить в
Мои игры
Торрент
Скачать

Технический документ в формате PDF – https://drive.google.com/file/d/1-TGgzM_ceiCXrAy7P62S_vo8ypmiVF9p/view?usp=shari...

Использованные ресурсы: 

Перечислите все графические, звуковые, библиотеки и т. д. ресурсы, используемые в вашем решении

  • Мультяшные ретро-тачки — ресурс Cidada от RCC Design https://assetstore.unity.com/packages/3d/vehicles/land/retro-cartoon-cars-cicada-96158
  • DrivenDecals - https://github.com/Anatta336/driven-decals/blob/master/Documentation~/DrivenDecals.md#creating-your-own-decals
  • Гибкая палитра цветов – https://assetstore. unity.com/packages/tools/gui/flexible-color-picker-150497
  • Саундтрек Gran Turismo 4: аркадный режим – https://www.youtube.com/watch?v=eKAhu7DyZN8
  • Универсальные аксессуары — https://assetstore.unity.com/packages/3d/props/free-universal-accessories-asset-pack-141691

Видео, демонстрирующее функциональность: https://www.youtube.com/watch?v=0AQc8_B1mho&feature=youtu.be

Анализ: 

В зависимости от необходимых функций было задано несколько вопросов:

  • Как много настроек мы хотим добавить в каждую систему?
  • Как мы сохраняем готовые игроки и загружаем их в игру?
  • Как мы обрабатываем сегментированные текстуры автомобиля?
  • В Unity есть простая система декалей. Но как мы хотим с его помощью персонализировать машину?

Подход: 

После исследования и тестирования систем цвета, декалей и орнаментов был выбран следующий подход:

  • Интерфейс
    • В нашем пользовательском интерфейсе есть вкладки, которые разделяют три системы втри разных меню. Используя холст Unity, мы включаем кнопки, которые позволяют пользователю переключаться между различными вариантами декалей и орнаментов и отображать названия отображаемых в данный момент элементов. Для цветов имеются ползунки, указывающие значения RGB, которые напрямую изменяют цвета материала.
  • Пользовательская система цветов 
    • Идея заключалась в том, чтобы иметь палитру цветов, которая позволяла бы игроку изменять шейдер поверхности. Сначала я попробовал использовать граф шейдера для подключения текстуры автомобиля. У меня также есть значение настройки RGB и оттенок текстуры, который позволяет игроку использовать ползунок для изменения значения. Результат не тот, который я хочу. Вместо этого я нашел палитру цветов в хранилище ресурсов Unity, чтобы изменить ее и внедрить в сцену. Это работает очень похоже на то, что я пытался сделать раньше. Я поставил ползунок для каждого цвета RGB, каждый ползунок имеет разную цветовую текстуру. Сам автомобильный актив разделяется на разные части. Я соединил разные ползунки с разными материалами автомобиля, чтобы игрок мог настраивать разные цветовые схемы деталей. Использование ползунка обновит цвет материала в сцене.
    • Скрипт — ApplyColor
      • Свяжите материал автомобиля и ползунка, затем обновите цвет материала как цветную текстуру. на слайдере.
  • Система декалей
    • Общий подход заключался в том, чтобы на машине были наборы декалей, по которым игрок мог бы переключаться. Для реализации системы декалей мы использовалиплагин DrivenDecals. Я обнаружил это во время своего первоначального исследования, когда искал, как реализовать декали при использовании URP. Сначала я выбрал URP, потому что был с ним лучше всего знаком, но позже я понял, что HDRP имеет встроенную систему декалей, которая работает аналогично плагину DrivenDecals, но к этому моменту моя система заработала. Есть четыре разных места, куда можно положить наклейку, и четыре варианта наклеек на выбор. Каждое расположение наклейки определяет, какая наклейка выбирается независимо с помощью сценария decal_car.
    • Script - decal_car
      • Управляет отслеживанием надписей на автомобиле, который в данный момент выбран для визуализации.
      • Сохраняет настройки игрока с помощью функций PlayPref.
    • Скрипт — decal_manager
      • Управляет связью между пользовательским интерфейсом и наклейкой на автомобиле
      • Управляет связью между пользовательским интерфейсом и наклейкой на автомобиле
      • Сохраняет настройки игрока с помощью функций PlayPref. li>
  • Система орнаментов
    • Система орнаментов аналогична системе декалей. Используя сценарии decal_car и decal_manager, decal_car отслеживает доступные украшения и выбор игрока.
  • Сохранение и загрузка
    • Существуют два разных варианта. виды информации об автомобиле, которые нам необходимо было отслеживать, цвет выбранных материалов и декалей/украшений. Материалы было достаточно легко сохранить, поскольку материал сам отслеживал изменение цвета в сценах. Однако сохранить предпочтения пользователя в отношении декалей/орнаментов оказалось сложнее. Потому что мой подход кВыбор декалей/украшений заключался в их активации/отключении, я использовал функции PlayerPref для сохранения того, что активно в данный момент, когда игрок загружает следующую сцену.
    • Сохранение и загрузка обрабатываются в скрипте decal_car

Разбивка подхода:

Система пользовательского интерфейса 

Три кнопки вверху представляют собой вкладки, которые управляют тем, какой вариант настройки следует просмотреть.

Система цвета – 

Пользовательская цветовая система использует ползунок и присваивает ему значение цвета и текстуру. Каждый слайдер имеет разную цветовую текстуру.

Сам автомобильный актив разделяется на разные части. Я связал разные ползунки с разными материалами автомобиля, а затем написал сценарий, который обновляет цвет материала до цветовой текстуры на слайдах, когда игрок перемещает ползунок в определенное положение. Чтобы игрок мог настраивать разные цветовые схемы деталей.

Система декалей –

Система наклеек имеет три предустановленных места, в которых можно распылять краску на автомобиль. На изображении ниже показана иерархия системы декалей. К каждой локации (передней, водительской и пассажирской) прикреплен скрипт decal_car.

Чтобы проецировать изображения на машину, я использовал плагин DrivenDecals. Он работает аналогично проектору декалей HDRP. Наклеив на автомобиль 4 разные наклейки, 

Система орнаментов 

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

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

Сохранение и загрузка – 

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

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

Как скачать Car Customization через торрент

Всего несколько простых шагов:

  • Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
  • Выбираем и скачиваем подходящий торрент-файл репака Car Customization
  • Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
  • После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!