![Постер Grand Theft Auto V](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/3498.jpg)
![Постер Cyberpunk 2077](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/41494.jpg)
![Постер Elden Ring](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/326243.jpg)
![Постер The Witcher 3: Wild Hunt](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/3328.jpg)
![Постер Euro Truck Simulator 2](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/9609.jpg)
![Постер God of War](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/58175.jpg)
![Постер Marvel's Spider-Man](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/58134.jpg)
![Постер Forza Horizon 5](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/622492.jpg)
![Постер Baldur's Gate III](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/324997.jpg)
![Постер Red Dead Redemption 2](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/28.jpg)
![Постер Horizon Zero Dawn](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/278.jpg)
![Постер Monster Hunter: World](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/46889.jpg)
![Постер The Elder Scrolls V: Skyrim](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/5679.jpg)
![Постер Palworld](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/718135.jpg)
![Постер No Man's Sky](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/2093.jpg)
![Постер DOOM Eternal](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/58777.jpg)
![Постер Starfield](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/58779.jpg)
![Постер Far Cry 6](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/463723.jpg)
![Постер Resident Evil 4](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/795632.jpg)
![Постер Devil May Cry 5](/_ipx/f_webp,q_70,fit_cover,s_200x113/static_files/uploads/58755.jpg)
Car Customization
![](/static_files/7b56cf_0d604419775d4dceab72c4f7820c7d3e~mv2.gif)
Технический документ в формате 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 я сохраняю каждый раз, когда пользователь меняет надпись
Для загрузки, если сцена является сценой гонки, мы читаем данные с диска и активируем указанные объекты. Я столкнулся с проблемами при попытке создать экземпляр префаба в сцене, поскольку проектор декалей не работал в реальном времени, поэтому мне пришлось иметь префаб уже в сцене и заранее проецировать декали.
![](https://media.rawg.io/media/screenshots/559/55935e3b09a5637f4a9c752595785a0a.jpg)
Как скачать Car Customization через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака Car Customization
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!