Добавить материал и получить бесплатное свидетельство о публикации
версия для слабовидящих
Столичный учебный центр 8-800-7777-300 (звонок бесплатный)
Лицензия на осуществление образовательной деятельности № 038767 от 26 сентября 2017 г.
Дистанционные курсы профессиональной переподготовки и повышения квалификации
Курсы профессиональной переподготовки
112 курсов по цене от 3 540 руб.
Смотреть
Курсы повышения квалификации
268 курсов по цене от 840 руб.
Смотреть
Главная / Другое / Основные механизмы Unity

Основные механизмы Unity

Международный конкурс

Идёт приём заявок

Подать заявку

Для учеников 1-11 классов и дошкольников

16 предметов

Основные механизмы в Unity

Камеры 

Камеры существуют в трехмерном мире, поскольку они являются портами вывода (View port)результирующего изображения на экран. Камеры могут быть расположены в любой точке игрового мира Unity, имеют поле зрения (FOV), которое представляет собой форму пирамиды. Они имеют много различных свойств и могут быть заскриптованы и вписываться в необходимый сценарий вашей игры.
С изменением параметра поля зрения (FOV) трехмерной камеры - меняется и порт вывода (view port).

В игровом движке вы можете заметить, что такие эффекты, как освещение, тени и пост эффекты применяются к камере. Чтобы помочь движку с моделированием реалистичного изображения, вы можете добавить несколько дополнительных кинематографических эффектов, такие как вспышки линзы при взгляде на солнце.

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

Многоугольники, ребра, вершины, и меши 

При построении трехмерных фигур все объекты в конечном счете составляются из связки обычных двухмерных форм, известных как многоугольники. При импорте моделей из среды моделирования в Unity, все многоугольники преобразуются в треугольники, они же полигоны. В свою очередь треугольник состоит из трех вершин, связанных ребрами. Зная эти вершины, движок игры в состоянии производить вычисления точек столкновений, используя сложный алгоритм обнаружения с коллайдером Меша. Такие вычисления позволяют точно определить местоположения пересечения, например точка попадания пули в контексте разработки шутера.
Комбинируя множество связанных между собой полигонов, используя трехмерное моделирование, позволяют Вам строить сложные формы, известные, как Меши (Mesh).



Во время разработки игры, разработчику крайне важно понимать важность количества отображаемых полигонов на экране. Чем выше число полигонов, тем больше работы требуется проделать компьютеру, прежде чем вывести все необходимые объекты на экран. Это именно то, что мы могли наблюдать в прошедшие пару десятков лет - увеличения уровня детализации от ранних трехмерных игр до сегодняшнего дня. Просто сравните визуальное оформление таких игр, как ХХХ (199*) и YYYY (200*) и ZZZZ (201*). Это происходит в результате появления более производительного оборудования, и теперь разработчики могут позволить размещать на экране более высокополигональные модели и эта тенденция будет неизбежно продолжаться. Но, всегда помните, что оптимизацией не стоит пренебрегать.

Материалы, текстуры, и шейдеры 

Материалы (Materials) - общее понятие ко всем трехмерным формам, поскольку они дают возможность настроить визуальных характеристики трехмерной модели. От основных цветов до карты отражения, содержащей информацию об окружающих объектов. Материал работает с шейдером (Shader), который является сценарием, который отвечает за способ отрисовки того или иного объекта, на который он был применен.

В Unity очень легко использовать систему материалов. Любые материалы, созданные в пакете трехмерного моделирования, будут импортированы и обновлены движком автоматически и будут также созданы как ассеты (Assets), чтобы их можно было использовать позже. Вы можете с такой же простотой создавать свои собственные материалы, назначая изображения как файлы необходимые текстуры для материала и выбирая шейдер из большой встроенной библиотеки. Вы также можете написать свои собственные шейдеры, или использовать шейдеры, написанные другими разработчиками сообщества Unity.

Создавая текстуры для игры в графическом пакете, такие как Photoshop, вы должны знать о допустимых разрешениях, которые поддерживает игровой движок Unity. Текстуры, должны быть квадратными и размер стороны, должен являться степенью двойки. Например:

16х16

32х32

256х256

512х512

1024х1024

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

Физика твердых тел 

Внутри игрового движка, встроен физический движок (Physics Engine), который позволяет промоделировать взаимодействие объектов между собой по основным физическим законам реального мира. В Unity используется Nvidia PhysX, самый популярный и весьма точный коммерческий физический движок.
В движке игры не каждый объект моделируется, как физический объект. Во-первых, потому что это требует большой обработки данных, и во-вторых, потому что это просто не имеет смысла. Например, в трехмерной игре, имеет смысл сделать объект "Автомобиль" настроить, как физический объект, но для окружающий объектов, таких, как деревья, стены и т.д. - это не имеет смысла, т.к. они являются статическими объектами на сцене. Поэтому, разрабатывая игру, добавляйте компонент Твердого тела (Rigidbody, не путать с Rigidbody 2D), только тем объектам, которые вы хотите отдать под контроль физического движка.

Физический движок для игр использует Динамику для моделирования твердого тела, создавая реалистичное движение. Это означает, что вместо статичных объектов трехмерного мира, будут динамическое объекты, имеющие следующие дополнительные свойства:

Масса

Сила тяжести

Скорость

Трение

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

Обнаружение столкновения 

Один из самых важных компонентов физического движка является обнаружение столкновений - способ, с помощью которого мы анализируем наш трехмерный мир для определения, что некоторые из объектов столкнулись между собой. Добавляя на объект компонент Коллайдера (Collider), мы размещает невидимую сеть вокруг объекта. Эта сеть имеет свою форму и отвечает за сообщения о любых столкновениях с другими коллайдерами, заставляя движок игры вызывать соответствующее поведение.

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

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

Идея Unity 

Unity делает процесс разработки игры простым, давая Ваш ряд логических шагов, чтобы построить любой мыслимый сценарий игры. Чтобы ваша игра не была привязана к определенному жанру, Unity предлагает Вам чистый холст и ряд простых последовательных процедур, чтобы позволить Вашему воображению творить и раскрывать Ваш творческий потенциал. Вы в состоянии в процессе игры, изменить её часть, вы можете превратить обычный статический объект в вашей игре в управляемый, который будет состоять из многих отдельных составных частей. Вы в состоянии расширять свою игру в логично-прогрессивной манере. В свою очередь, каждая составная часть объекта имеет свои настройки и парамеры, которые позволяют управлять поведением объекта. Вы можете их регулировать, и тем самым у вас есть полный контроль над полученным результатом.

Давайте рассмотрим простой пример.

Путь падавана Unity 

Если бы я хотел добавить в игру живой шар, то я начал бы со сферы. Это можно быстро и легко сделать с помощью меню Unity, это даст Ваш новый игровой объект с мешем сферы, и компонент Renderer, чтобы сделать этот объект видимым на экране. Также я могу добавить на мою сферу компонент твердого тела (Rigidbody). Это скажет Unity, что к данному объекту необходимо применить физический движок. С этим компонентом приходят такие настройки, как масса, сила тяжести, способы применения силы к объекту, коэффициенты трения и т.д.

Более того я хотел бы добавить небольшую плоскость и разместить её ниже уже созданного шара. Это делается также просто, как и создание шара - с помощью меню Unity. Если мы запустим игру, то увидим, что шар просто упадет плашмя на плоскость. Но, что, если я хочу, чтобы он повел себя, как обычный футбольный шар, который бы еще и подпрыгнул? Это просто! У компонента коллайдера (Collider) есть свойство, которое позволяет задать физический материал (Physics Material). Это свойство позволяет настраивать поведение объекта при столкновении с определенными поверхностями других объектов. Здесь мы можем выбрать уже существующие материалы, в данному случае нам подойдет - !!упругий". При повторном запуске, когда шар упадет на плоскость, он отскочит. 
В итоге, простая сцена готова за пару щелчков мыши!

Такой подход является самым основном, во время разработки игры в Unity. Сперва все начинается с простых элементов и затем они постепенно обзаводятся дополнительными компонентами, или становятся часть составных. Разбивание сложной задачи на мелкие и последовательное их решение - вот основное правило разработки Unity.

Ассеты 

Ассеты (Assets) - это стандартные блоки всех проектов Unity. От графики в форме файлов изображений до трехмерных моделей и звуковых файлов. Unity обращается к этим файлам, которые вы будете использовать во время создания игры, как ассеты. Это как раз та причина, почему в любой папке проекта Unity, все используемые файлы хранятся в основной папке "Assets"

Сцены 

Во время разработки вашей игры в Unity, Вы должны думать о сценах, как об отдельных уровнях, или областях содержания игры (например, меню игры). Разрабатывая игру со множеством сцен, вы сможете контролировать и распределить время загрузки уровня, а так же сможете проверить различные части вашей игры отдельно друг от друга.

Игровые объекты (Game Objects) 

Когда ассет используется на сцене игры, то он становится игровым объектом (Game Object). Все игровые объекты содержат по крайней мере один компонент для старта - компонент Transform. Данный компонент, позволяет движку игры управлять положением объекта в игровом мире, он указывает координаты позиционирования, вращения и масштабирования объекта для каждой из существующей в игре оси - X, Y, Z. Так же, вы можете передать это объект в параметры какого-либо скрипта и там управлять им, например установив ему необходимую позицию, угол вращения, или масштаб. От этого базового объекта вы сможете в дальнейшем с легкостью переходить к другим его компонентами. Вы так же в праве добавлять новые компоненты на игровой объект, добавляя необходимые функциональные возможности, чтобы воспроизводить сценарий игры, который Вы только можете вообразить.

Компоненты (Components) 

Компоненты (Components) могут быть разных видов. Они могут быть сделаны для того, чтобы расширять поведение объекта, определять его, или влиять на другие аспекты функций объекта в игре. Прикрепляя компонент к объекту, Вы сможете немедленно применить новые части игрового движка к Вашему объекту.

Общие компоненты разработки игры уже реализованы, как встроенные в Unity, такие как компонент твердого тела (Rigidbody), освещение (Light), камеры (Camera), генераторы частиц (Particles Emitters), примитивные объекты (Primitives) и т.д. Для того, чтобы все это оживить необходимо разрабатывать сценарии (Scripts), которые также являются компонентами объектов в Unity.

Сценарии (Scripts) 

Сценарии (Scripts) - это компоненты Unity, и основная часть разработки игры и поэтому заслуживают, отдельного ключевого понятия. Unity предлагает на выбор три разных языка программирования для разработки скриптов:

JavaScript - функциональный язык программирования с простым синтаксисом.

C# - объектно-ориентированный язык программирования Boo

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

Для написания сценариев возможно использовать любой текстовый редактор, но лучше использовать специальную среду разработки. Во время установки Unity предлагает сразу же установить такую среду - MonoDevelop, но вы вправе и использовать такие вещи, как Visual Studio, VSCode или Sublime. Использование специального обеспечения для написания сценариев упростить Вам процесс разработки, в данные среды входят такие замечательные вещи, как автоматическая проверка синтаксиса, авто-завершение и подсказки по существующим функциям. По умолчанию, Unity будет пытаться использовать MonoDevelop, но Вы сможете изменить это в настройках Unity.

Шаблон игрового объекта (Prefab) 

Использование игрового движка Unity крутится вокруг использования различных игровых объектов (GameObject), размещенных в игровом мире. Unity предоставляет возможность хранить такие объекты со всеми их свойствами как ассеты (Assets) проекта, которые Вы сможете повторно использовать в различных частях Вашей игры. Вы сможете изменить параметры и компоненты игрового объекта, основанного на шаблоне, индивидуально.

Рассмотрим "Ящик" в качестве примера. Допустим, что Вы настроили вес вашего объекта, написали скрипт поведения для её разрушения и наверняка, Вы, захотите использовать этот объект в игре ни один раз. Шаблоны (Prefab) позволяют Вам хранить объект в полной комплектации, со всеми компонентами и текущими конфигурациями. Они сопоставимы понятию MovieClip в Adobe Flash, думайте о шаблонах (prefabs) просто как о пустых контейнерах, которые вы можете заполнять объектами, чтобы сформировать набор данных, который Вы вероятно переработаете, и все эти изменения отразятся на объектах сцены, основанных на этом шаблоне.



  • Другое
Скачать материал
Автор Суродькин Александр Николаевич
Дата добавления 11.06.2019
Раздел Другое
Подраздел Другое
Просмотров 78
Номер материала MA-086590
Скачать свидетельство о публикации

Оставьте свой комментарий:

Введите символы, которые изображены на картинке:

Получить новый код
* Обязательные для заполнения.


Комментарии:

Популярные курсы