Быстрый старт с Unity 3D

Konstantin
Konstantin Ostrovsky
2019-03-28 14:09:17
51

Игровая индустрия не стоит на месте и 3D игры уже стали обыденностью. Unity предоставляет огромный набор инструментов для создания 3D игр. Сегодня я ознакомлю Вас с самыми полезными компонентами и приведу примеры их использования.

Хотелось бы сразу сообщить Вам что статья не претендует на пособие по работе с Unity 3D, в статье лишь рассмотрены наиболее полезные аспекты.

Unity - бесплатная платформа для создания кроссплатформенных игр. Код пишется на языке C#, который после TS не должен Вас пугать. Скачать Unity можно с официального сайта: https://unity.com/ru
Так же советую Вам сразу зарегистрироваться на сайте, так как магазин дополнений и программа требует авторизации.

В качестве редактора по умолчанию будет установлен VS Code, но этот редактор платный. Если Вы не желаете платить за IDE, то советую связку Atom и IDE-CSharp.

Я опущу установку компонентов, думаю тут и так все понятно. Если у Вас возникнут вопросы - пишите в комментарии.

 

Начало работы

Любое создание игры начинается с создания проекта. Откройте Unity и он сразу предложит Вам открыть существующий проект или создать новый. При создании необходимо указать тип приложения: 2D, 3D и др. Это не сильно на что-либо влияет, но лучше указать. Аналитику подключать необязательно.

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

 

Основные термины

Идеология Unity достаточно проста и мало отличается от Unreal Engine или Cocos Creator. Если Вы уже знакомы с этими движками, то эту часть статьи можно пропустить. 

Важно понимать что все элементы, которые Вы видите в игре Unity являются инстансами класса GameObject, соответственно имеют все его методы и свойства. Создать новый  игровой объект Вы можете в редакторе структуры сцены, либо при помощи метода Instantiate() в коде. Сами по себе объекты не несут никакого функционала. Что бы "прицепить" логику к игровому объекту, мы должны добавить к нему компонент

Компонент - это код, написанный на языке C#. Все компоненты наследуются от базового класса MonoBehaviour. Для создания нового компонента рекомендую воспользоваться навигацией по файлам. Как можно заметить, компоненты могут иметь переменные, значения которых мы должны устанавливать прямо в редакторе. Что бы свойство компонента отображалось в редакторе, достаточно просто сделать это свойство публичным. Визуальный компонент автоматически меняется в зависимости от типа переменной.

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

UI или же Canvas. Важно понимать что все игровые элементы, которые созданы вне элемента Canvas будут смещаться при изменении позиции камеры. Canvas служит для хранения HUD-элементов и подобного. К сожалению, на Canvas есть ограничения. Он не отображает 3D-объекты. 

Материалы. Материалы могут быть физическими или текстурными. Физические материалы, как следует из названия, хранят в себе информацию о физических свойствах объекта. Материалы хранятся в файлах и могут быть добавлены к нескольким объектам. Текстурные материалы являются визуальным компонентом, как спрайты, только еще хранят информацию о взаимодействии объекта с светом и другие свойства, отвечающие за рендеринг объекта.

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

Shader. Шейдеры чаще всего используют для визуализации различных графических эффектов. Среди этих эффектов блики воды, размытие и еще много. Шейдеры устроены достаточно просто, но дают безграничные возможности. Шейдер - функция, в которую передается вектор позиции пикселя и вектор его цвета. Функция должна вернуть новый цвет пикселя. В один проход рендера вывается шейдер для каждого пикселя. Для монитора 1920х1080 - это 2073600 вызова на кадр. Можно представить как напрягается GPU в это время. Поэтому, крайне не рекомендуется злоупотреблять шейдерами, а их оптимизация - это вообще отдельная история... Провести эксперименты и написать свой шейдер Вы можете на сайте https://www.shadertoy.com/.

Я опущу такие термины как Camera, HUD, Sprite, Tile. Эти понятия были рассмотрены в цикле статей по Phaser 3.

 

Разные плюшки

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

Particle System

Больше всего мне всегда было интересно как же делают дым и туман в играх, потому что дым или туман - это очень сложный физический и химический процесс, который зависит от множества факторов окружающей среды и состоит из миллионов частиц. Да и все олды помнят потрясающие GTA V, NFS, TDU. Если у Вас не очень мощный ПК, то каждый раз когда в игре отображался дым из под колес - ПК ловил жестокие тормоза. Для создания таких вещей, в Unity существует компонент Particle System (пер. система частиц).  Компонент имеет очень много настроек отображения. Все они отлично описаны здесь. Ниже Вы можете увидеть результаты некоторых моих наработок:

Physics

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

Light

Он же - свет. Позволяет создавать потрясающие сцены, которые поражают своей реалистичностью. Существует несколько компонентов для освещения. Основные, которые Вам точно пригодятся - Direction Light(Направленный свет) и Point Light(Точка света). Вот лишь несколько примеров реализации освещения:

 

Подводя итоги

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

Как обещал, ссылки на сорцы:

- The Ball - отличная аркада, созданная с использованием только встроенных возможностей движка. Цель игры - пройти как можно дальше и открыть все скины персонажа. В игре присутствуют Coins, которые можно поднять в ходе прохождения уровней. Реализованы самые популярные аркадные бусты и что не мало важно, отсутствует реклама! Игра скомпилирована под Android, скачать apk можно здесь.

- Simple Car - удобнейший шаблон для гоночной игры. Реализована вся физика, доступно 4 машины на выбор. Это лишь скелет игры и только от Вас зависит что получится в результате.  Игра скомпилирована под Android, скачать apk можно здесь.

 

Бонус

В качестве бонуса предоставляю Вам возможность самостоятельно пройти экскурсию по лаборатории WebPanda в виртуальном мире:


Игры от Web Panda Games
GooglePlay



Читай web-panda через приложение