Unity3D: Урок по созданию трехмерной игры-платформера в среде разработки: Введение

Введение


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


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

Данный урок проведет вас через процесс построения самодостаточного уровня с видом от третьего лица для трехмерной игры-платформера. Он включает все, от управления игроком, определения столкновений, некоторый продвинутый скриптинг, размытые тени, базовый ИИ, добавление игрового HUD, сцены-заставки и сюжетные аудио-эффекты.

Что вы изучите

Этот урок акцентирован на технической стороне построения игры в интегрированной среде движка Unity и раскрывает следующие аспекты:

  • Управляющие контроллеры персонажа
  • Проекторы
  • Аудио-проигрыватели, аудио-источинки и аудио-клипы
  • Многочисленные камеры (и как переключаться между ними)
  • Система скриптинга графического интерфейса Unity
  • Коллайдеры
  • Отправка сообщений и события
  • Освещение
  • Система частиц
  • Мягкие тени
  • Написание скриптов (ИИ, управление состоянием игры, контроллеры для управления игроком)

В данном уроке будет показано, как перечисленные особенности могут быть использованы все вместе для создания игры.

Что вам уже следовало бы знать

В этом уроке достаточно широко используется написание скриптов, поэтому вам следовало бы быть знакомым, по крайней мере, с одним из поддерживаемых языков программирования, применяемых в среде Unity: JavaScript, C# или Boo.

Также подразумевается, что вы знакомы с интерфейсом редактора Unity и знаете, как выполнить основные действия, такие как, позиционирование игровых ресурсов (assets) в сцене, добавление компонентов (Components) к игровому объекту (GameObject) и редактирование свойств в окне инспектора.

Организация проекта

Unity не ставит перед собой целью навязать конкретный способ организации игровых ресурсов в вашем проекте. Вы, возможно, предпочтете организовать их в соответствии с типами, используя отдельные папки для них, назвать их, к примеру, «Textures», «Models», «Sound effects» и т.д. В компании Unity Technologies, мы пришли к выводу, что такая структура хорошо подходит для маленьких проектов. Для более сложных проектов, нашим пользователям в большинстве своем рекомендуется организовывать ресурсы в соответствии с их функциями, возможно, группируя их в папках, как например, «Player», «Enemies», «Props», «Scenery» и так далее.

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

Абстрактные игровые объекты (GameObjects) и компоненты (Components)

Конструктор Unity размещает каждый игровой ресурс (asset — от англ. «актив») сцены в центре процесса разработки.

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

Скрипты определяют то, как ресурсы (Assets) и игровые объекты (GameObjects) взаимодействуют в сцене редактора Unity друг с другом и это взаимодействие является ядром всех разрабатываемых игр. По этим причинам обычно хорошая идея — размещать информационные комментарии внутри скриптов.

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

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

Мы рекомендуем вам читать скрипты по мере того, как мы будем представлять их в этом уроке, изучая их действие. Не стесняйтесь экспериментировать!

Файлы

Самые свежие файлы для этого проекта можно скачать отсюда:
http://unity3d.com/support/resources/files/3 DPlatformTutorialStart.zip

Папка «Scenes» содержит отправной пункт сцены под именем «TheGame» для этого урока, которая включает геометрию уровня, настройку камеры, свет, космический корабль и основные составляющие игры.

Данный урок предполагает, что вы уже знаете основные элементы управления Unity, такие как позиционирование объектов в сцене, поэтому первый отправной пункт Сцены уже имеет основные декорации и некоторые реквизиты, готовые к использованию.

Типографические условные обозначения

Это длинный урок, который содержит много информации. Чтобы было легче его выполнить, использованы некоторые простые условные обозначения.

Фон и другое

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

Код скрипта будет отображен, как показано ниже:

//Это некоторый код скрипта
Function Update()
{
DoSomething();
}
Примечание Скрипты, вошедшие в урок, содержат много комментариев и разработаны так, чтобы было легче им следовать. Подобные комментарии обычно не приводятся в коде обучающего текста, чтобы сэкономить пространство.

Действия, которые вы должны выполнить в Unity показаны ниже:

  • Нажмите на это;
  • Затем на это;
  • Нажмите Play.

Имена скриптов, ресурсов проекта (Assets), элементов меню или свойств в окне инспектора показаны полужирным текстом. И наоборот, моноширинный шрифт используется для функций скрипта и для имен событий, как например, функция Update() в примере скрипта выше.

Условные обозначения Unity

Unity — уникальная система разработки. Большинство разработчиков по привычке будут работать в редакторе кода, тратя 90% своего времени на его редактирование, и даже будут писать код для подгрузки и использования ресурсов проекта. Unity другой движок: он акцентирован на ресурсы, а не на код, и в большинстве своем фокусируется на игровых ресурсах, подобно программе для трехмерного моделирования. По этой причине, важно понимать ключевые особенности и уникальность терминологии при разработке в среде Unity:

Проекты

Игра, сделанная в Unity будет состоять из Project (проекта), в котором находятся все элементы, такие как, модели, скрипты, уровни, меню и т.д. Обычно один файл проекта будет содержать все элементы игры. При запуске Unity сначала открывается файл проекта. (Если вы только что установили движок, то это будет файл проекта, который содержит Island Demo.)

Сцены

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

Игровые объекты (GameObjects), компоненты (Components), ресурсы (Assets) и префабы (Prefabs)

Ключ к пониманию Unity — взаимоотношение между игровым объектом (GameObjects) и компонентом (Components).

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

Игровой объект — это фундаментальный строительный блок в Unity. Это контейнер для различных частей функциональности, имя которой — компоненты. Игровой объект почти всегда содержит больше чем один компонент. Все игровые объекты содержат компонент трансформации (Transform Component), который определяет их позицию и ориентацию в пространстве.

Иерархия игровых объектов

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

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

Компоненты — это строительные блоки игровых объектов. Без них игровой объект не сделает ничего интересного.

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

Компонент всегда привязан к игровому объекту и не может существовать без него. Различные компоненты могут быть привязаны к одному и тому же игровому объекту. Игровые объекты могут поддерживать разнообразные компоненты определенных типов — игровой объект может содержать любое количество скриптов, например. Но другие, как, например, те, которые используются для определения системы частиц, являются исключением и могут отображаться только раз в каком-нибудь одном игровом объекте. Например, если вы хотите определить многочисленные системы частиц, то по правилам вам следует использовать иерархию игровых объектов, каждый из которых будет содержать свой собственный набор компонентов системы частиц.

Игровые ресурсы (Assets)

Все ваши импортированные ресурсы отображаются в окне «Project» и они могут быть чем угодно: простым материалом или текстурой, аудио-файлами, или даже готовыми шаблонными игровыми объектами (известные как «Префабы»).

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

Пользовательские значки и гизмо

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

Ресурсы вашего проекта показаны в окне «Project». Когда вы перетаскиваете ресурс (Asset) в сцену, то он появляется в окне «Hierarchy», которое определяет содержимое сцены. (Игровая сцена подобна театральной. Она может быть уровнем, меню, приемной для многопользовательской игры — всем, чем вы только пожелаете.) Окно «Project» остается неизменным во всех сценах вашего проекта.

Префабы (Prefabs)

Префаб — это игровой ресурс, который был определен в качестве шаблона. Для Unity он является тем же самым, что и документ-шаблон для текстового редактора. Когда вы помещаете префаб в сцену, Unity размещает ссылку на него в окне «Hierarchy», но не полную копию. Это процесс называется созданием экземпляра. Каждая ссылка, которую вы делаете, рассматривается как экземпляр префаба.

Если вы выберите мышью префаб в окне «Project» и отрегулируете его настройки, то вы заметите, что эти изменения незамедлительно отразятся во всех его экземплярах в игровой сцене. Это делает префабы идеальными для многократного повторного использования элементов, таких как пули, враги и так далее. Если вы обнаружите, что игровой вражеский персонаж ведет себя неправильно, то вам просто нужно отрегулировать скрипт или настройки в оригинальном префабе, вместо того, чтобы редактировать каждый из них в сцене индивидуально.

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

Префабы отображаются синим текстом в окне «Project» и в окне «Hierarchy».

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

Слова благодарности

Данный урок не был бы разработан без участия следующих людей: Дэвид Хелгесон, Джоушим Эйнт, Том Хиггинс, Сэм Каман, Кэли Хлодверссон, Николас Франсис, Арас Пранкевичиус, Форест Джонсон, и конечно же, Этан Восбург, который создал замечательные игровые ресурсы для этого урока.

Перейти к следующей части урока по созданию трехмерной игры-платформера в среде разработки Unity3D

Смотрите также:

Урок по созданию трехмерной игры-платформера в среде разработки Unity3D: Первые шаги


Урок по созданию трехмерной игры-платформера в среде разработки Unity3D: Настройка сцены

Комментировать

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