В данном посте я опишу то, чем занимался до того, как создал этот сайт. Я бы мог не описывать ничего из этого, но тогда повествование выглядело бы дерганым, поэтому все-таки нужно описать то, с чего я начинал.
Итак, в самом начале, я не имел никакого опыта с Unity. Вообще никакого. Абсолютно никакого.
Для меня Юнити- это была система, в которой можно «делать там какие-то там игры», но каким образом это всё происходит я был в полнейшем непонимании. Когда я открыл студию первый раз, то очень сильно попал в состояние прострации, т.к. такого количества разнообразных кнопочек, рычажков и настроек я действительно не ожидал увидеть. На мгновение даже у меня проскакивали мысли: «Как такое вообще можно освоить».
Однако, у страха глаза велики, зато йенг маленький. Поэтому, засучив рукава, я приступил к работе. (плюс ко всему, дедлайны по курсу давали мне дополнительной мотивации).
Началось обучение, естественно, с простейших вещей, как то: поставить Unity, первоначально настроить, сделать пару объектов, полетать по сцене (особо стоит тут упомянуть, как я привыкал к управлению в сцене, т.к. поначалу было довольно таки тяжело перемещаться и масштабировать сцену. Зато сейчас это всё уже на механическом уровне).
Итак, начал я с создания простейших 3D-объектов из подручных средств. Попутно изучив, что такое материалы и как с этим работать. В итоге получилась мега-простая композиция деревьев и дороги.
Далее курс начал приобретать более хардкорный характер и я приступил к изучению Мешей (сетка полигонов, из которой состоит любой 3D-объект), Коллайдеров (полигоны, которые отвечают за взаимодействие с другими объектами), Rigibody (для применения физики к объектам) и т.д.
Сперва упор был сделан на то, что именно из себя представляют материалы и шейдеры.
Материалы – это наборы текстурных карт и настроек поверхности для визуализации модели.
Шейдеры – это код для исполнения на видеокарте, который описывает логику отображения материала.
Изучив, как именно в Unity представлены материалы, я научился накладывать различные текстуры на объекты (применяя, при этом, различные материалы для одной и той же текстуры, но разного масштабирования объектов).
Окей, поехал дальше. Следующим в списке были коллайдеры.
Коллайдеры — это группа компонентов, задающая физическую форму модели, ее коллизию.
Коллайдеры бывают следующих типов:
-Box
-Sphere
-Capsule
-Mesh
Если объект требует сложной формы обработки столкновений, то используют составную коллизию. Например, как здесь:
Изучил, что можно быть очень ленивым человеком и для создания коллизии не заморачиваться, а просто использовать Mesh Collider. При этом Unity сама создает коллайдеры (очень точные, причем) по всем граням объекта. Минусом здесь является то, что эта технология достаточно требовательна к ресурсам. Поэтому для GreyBox-уровня это еще может прокатить, но если мы не хотим, чтобы наша супер-игра выдавала 15 ФПС, придется все-таки отрисовать коллайдеры самостоятельно.
Чем, я собственно и занялся. У меня была практика, где для модели дома необходимо было реализовать коллайдеры. У меня получилось вот так:
Поставил FPS-Controller, побегал. Даже поскидывал на крышу 3D-кубы, все отрабатывало прекрасно.
Кстати, возможно я когда-нибудь получу суперсилу и начну называть проекты так, чтобы, спустя неделю, было понятно, о чем конкретно был данный проект:
Далее, изучил, что такое префабы.
Префабы – это тип ассетов, который хранит объект со всеми значениями свойств.
Образно говоря, это настроенная модель, которую можно раскидать по всему уровню, и если мы что-то придумали в этой модели изменить, то при изменении префаба, меняются все модели в сцене.
Потом я изучал освещение. Это очень объемная и очень сложная тема в Unity (я конкретно ощутил сложность, когда делал финальное задание 3-го модуля обучения).
Освещение делится на:
Directional Light – источник света, который светит в одном направлении. Чаще всего используется в качестве солнца.
Point Light – точечный источник света. Когда из точки свет идёт во все стороны. Используется для имитации света из светильников.
Spot Light – распространение света сфокусированным пучком. Используется для имитации фонарика, ламп автомобиля и т.д.
Area Light – свет из области (например, свет из окна). Работает только со статическими объектами
Для практики я создал сцену со светящимися кубиками:
Далее я изучил, что такое запекание света (процесс создания карты света для статических объектов. Для того, чтобы снизить аппаратную нагрузку).
Потом я немного изучил глобальные параметры Lighting. Но с этим делом еще нужно разбираться и разбираться.
Затем я изучал систему частиц. Это очень крутая вещь в Юнити, которая позволяет создавать различные эффекты.
Очень сложная в изучении, но если понять, то можно создавать действительно красивые вещи.
Как, например, костер:
Затем я немного прошел по интерфейсам и скриптам, подвязанным к ним (хотя на скрипты сейчас особо упор не делается, т.к. не все на курсе со знаниями шарпа. Как я уже убедился, не все со знаниями, в принципе, что такое программирование, в принципе):
А закончил я модуль созданием сцены Night City. Здесь я применил то, что изучал ранее, но особенно работу с освещением (делал всё на моделях и звуках, предоставленных платформой курса):