Практика 1. Начало


Ознакомление с рабочей средой Unity

1. Введение в Unity

Курс основан на использовании рабочей среды Unity.

Unity - мультиплаформенная среда разработки 2D и 3D приложений реального времени. Это означает, что результат - графика, симуляция физики и т. д. - происходит сразу без предварительного ожидания, как это бывает, например, в приложениях создания 3D анимаций.

Все версии проекта Unity содержат интегрированный редактор проектов, поддерживают импорт графических и неграфических ресурсов (моделей, в том числе анимированных, текстур, скриптов и т. д.), содержат встроенные ландшафты, шейдерную систему, сочетающую простоту использования, гибкость и производительность. Программирование графики в Unity осуществляется средствами JavaScript, Boo (диалект Python) и C# на основе .NET; реализована работа с сетью, используется физический движок Ageia PhysX, смешивание 3D-графики реального времени с потоковым аудио и видео. Сервер ресурсов Unity обеспечивает контроль версий в Unity.

Unity поддерживает широкий диапазон платформ: Windows, macOS, iOS, Android, Linux, игровые консоли, браузеры.

Unity можно взять с официального сайта по ссылке: https://unity3d.com/get-unity/download/archive
Также нам понадобится стандартный набор Standard Assets, который можно взять с сайта Asset 

Store по ссылке:

2. Создание физических объектов

Создайте проект Unity. Сохраняйте сцену с помощью Ctrl+S.

В Unity есть две основные вкладки - это Scene и Game. Scene (Сцена) - это редактор объектов в пространстве вашего проекта. В режиме редактора сцен не происходят никакие симуляции, а для удобства отображаются различные элементы интерфейса прямо в сцене. Game - это ваше приложение в процессе выполнения. Для перехода к режиму Game нужно нажать кнопку Play, и затем можно поставить симуляции на паузу, или завершить повторным нажатием Play.

Откройте Window - Package Manager, скачайте (Download) и импортируйте в проект (Import) весь набор Standard Assets. Закройте вкладку Package Manager, нажав ПКМ и Close Tab.

Объекты, размещенные в сцене Unity именуются GameObject (Игровые Объекты). В строке меню для создания объектов есть одноименный раздел.



Рис. 1. Меню GameObject


Разместите объекты Plane (Плосткость) и Cube (Куб) в вашей сцене, как показано на рис. 2.

Перемещение объектов происходит интуитивно при создании или после нажатия на них. Также после выбора нужных объектов можно задать координаты расположение объекта в пространстве в панели Inspector в разделе Transform.

Созданные объекты видны в панели Hierarchy (Иерархия). При создании пустого проекта там также должны быть видны объекты Main Camera (Главная камера, используемая в Game) и Directional Light (Направленный свет, из-за которого на Plane видна тень от Cube).


Рис. 2. Расположение объектов Plane и Cube

Можно заметить, что в Inspector есть можно других настроек помимо Transform. Это дополнения к GameObject - Components (Компоненты) - модели, физика, материалы, т.д. Для добавления компонентов к выделенному объекту можно воспользоваться разделом Component строки меню или кнопкой Add Component в панели Inspector.

Добавьте компонент Physics - Rigidbody к объекту Cube.

Компонент Rigidbody отвечает за динамику объектов. После добавления компонента к нашему Cube, можно запустить программу через кнопку Play, и увидеть как этот объект падает на Plane. Сам Plane не имеет Rigidbody, поэтому он не падает. В настройках Rigidbody задаются физические свойства объекта - масса, трение, имеет ли объект гравитацию и т.д.

По-умолчанию оба наших объекта имеют компоненты типа Collider, что позволяет им сталкиваться (а значит Cube не падает сквозь Plane). В настройках можно задать как объекты будут сталкиваться, выбрав физический материал (например, из Standard Assets).

Выберите физ. материал Bouncy (Прыгучий из Standard Assets) для Box Collider объекта Cube.



Рис. 3. Выбор материала Bouncy

Нажав Play можно заметить, как куб начал отпрыгивать от Plane при столкновении.

3. Основы скриптинга

Дальше нам понадобится еще один куб, который будет являться стеной.
Создайте Cube и задайте Transform для него так как показано на рис. 4.



Рис. 4. Расположение стены

У нас получилось для объекта с названием Cube, и ко второму добавился постфикс (1). Эти наименования нам ничего особо не говорят, и будет намного удобнее, если мы их назовем по своему.

В Hierarchy переименуйте объекты в Floor, Cube и Wall соответственно порядку создания.

Приступим к созданию скриптов. Наши скрипты будут написаны на языке C#. Каждый скрипт имеет класс с тем же названием как и файл скрипта и наследует класс MonoBehaviour. Скрипт можно создать в разделе Assets - Create строки меню или в панели Project в папке Assets c помощью ПКМ.

Создайте скрипт с названием dropbox с содержанием класса как на рис. 5 и рис. 6. Прикрепите его к объекту Cube перетаскиванием скрипта на объект в сцене или иерархии.

В данном скрипте задается поведение объектов, использующих данный скрипт. По-умолчанию создаются методы Start (выполняется при запуске) и Update (выполняется каждый кадр). Эти методы нам не пригодятся, но нам будет нужен метод OnCollisionEnter (выполняется при начале столкновения).


Рис. 5. Класс dropbox

Функция Debug.Log выводит текст в панель Console (Консоль), последнее сообщение которой всегда видно в строке состояния Unity.

При запуске при каждом столкновении куба будет вывод сообщения “Collision occured”.

Метод OnCollisionEnter может принять параметр типа Collision, через который можно узнать с каким объектом произошло столкновение.



Рис. 6. Класс dropbox с учетом объекта столкновения


Повернув Cube на 60, 45, 0 и нажав Play можно заметить, что консоль выводит названия объектов столкновения, заданные ранее (Floor и Wall).

Комментарии

Популярные сообщения из этого блога

Лабораторные работы

О курсе...