
- •1. Преимущества, недостатки Unity. Примеры игр на основе Unity
- •Описание интерфейса главного окна Unity. Вкладка Scene, вкладка Game и панель инструментов.
- •Работа с мышью и клавиатурой. Навигация. Преобразование объектов. Вкладка Hierarchy, Project, Console и панель Inspector
- •4. Поддержка языков программирования в Unity. Сценарии. Компоненты. Методы Start() и Update(). Вывод информации в консоль.
- •5. Планирование трехмерного проекта fps. Трехмерное координатное пространство. Правая и левая системы координат.
- •6. Размещение объектов на трехмерной сцене. Понятие GameObject. Масштабирование объектов.
- •7. Источники света и камеры. Типы осветителей. Коллайдер, типы коллайдеров и точка наблюдения игрока в проекте fps.
- •3.3.3. Слежение за состоянием персонажа
- •14. Увеличение количества врагов: шаблон экземпляров, создание шаблона врага, сценарий SceneController, порождающий экземпляры врагов.
- •3.4.1. Что такое шаблон экземпляров?
- •3.4.2. Создание шаблона врага
- •3.5.1. Шаблон снаряда
- •3.5.2. Стрельба и столкновение с целью
- •3.5.3. Повреждение игрока
- •16. Типы игровых ресурсов. Создание геометрической модели сцены. Назначение геометрической модели. Наложение текстур. Выбор формата файла
- •4.1. Основные сведения о графических ресурсах
- •4.2. Создание геометрической модели сцены
- •4.2.1. Назначение геометрической модели
- •4.3. Наложение текстур
- •4.3.1. Выбор формата файла
- •17. Импорт файла изображения. Назначение текстуры. Создание неба с помощью текстур. Скайбокс. Создание нового материала для скайбокса
- •4.3.2. Импорт файла изображения
- •4.3.3. Назначение текстуры
- •4.4. Создание неба с помощью текстур
- •4.4.1. Что такое скайбокс?
- •4.4.2. Создание нового материала для скайбокса
- •18. Выбор формата файла для экспорта трехмерных моделей. Экспорт и импорт модели.
- •19. Системы частиц. Редактирование параметров эффекта. Новая текстура для пламени. Присоединение эффектов частиц к трехмерным объектам.
- •20. Подготовка проекта Memory. Понятие спрайт. Анимированные спрайты. Переключение камеры в режим 2d. Интерактивные объекты. Создание объекта из спрайтов.
- •21. Проект Memory: открытие карты по щелчку. Сценарий. Программная загрузка изображений. Выбор изображения в невидимом компоненте SceneController. Сценарий, реализующий эти методы.
- •28. Игра в стиле jetpack joyride в Unity 2d. Передвижение мыши вперед (скрипт). Создание бесконечного уровня в Unity: создание префаба, генератор комнат (скрипт).
- •29. Игра в стиле jetpack joyride в Unity 2d. Анимация персонажа: покадровая анимация, создание анимационных переходов, добавление параметров перехода.
- •31. Игра в стиле jetpack joyride в Unity 2d. Добавление лазеров в игру. Скрипт для включения, выключения, переключения и вращения лазеров. Настройка параметров этого скрипта.
- •32. Игра в стиле jetpack joyride в Unity 2d. Реализация скрипта, описывающего смерть мыши. Добавление анимаций Fall и Die, переходы между ними, триггер при смерти мыши.
- •33. Игра в стиле jetpack joyride в Unity 2d. Добавление монет. Использование тегов для различия в игре монет и лазеров. Обновленный скрипт контроллера персонажа.
- •Добавление метода для добавления нового объекта
- •Генерация и удаление объектов
- •Настройка параметров скрипта
- •35. Игра в стиле jetpack joyride в Unity 2d. Скрипт для добавления счётчика монет на экране. Скрипт для отображения кнопки на экране и возможности перезапуска игры.
- •Звук для лазера
- •Звук сбора монет
- •Звуки шагов и реактивного ранца
- •Добавление Audio Sources
- •Переключение между звуком шагов и реактивного ранца
- •Задание переменных сценария «Шаг» и «полет»
4. Поддержка языков программирования в Unity. Сценарии. Компоненты. Методы Start() и Update(). Вывод информации в консоль.
В приложении Unity поддерживается ряд языков программирования, в частности JavaScript и C#. Каждый вариант имеет свои достоинства и недостатки, но в этой книге все примеры даны на языке C#.
Для запуска кода в Unity первым делом нужно связать файлы с кодом с каким-либо объектом сцены. Это часть компонентной системы, о которой говорилось выше; игровые объекты создаются как наборы компонентов, и в каждый такой набор может входить исполняемый сценарий.
Сценарии в Unity представляют собой компоненты. Но следует отметить, что в эту группу попадают не все сценарии, а только наследующие от класса MonoBehaviour, базового класса компонентов-сценариев. Этот класс определяет способ присоединения компонентов к игровым объектам. Наследование от этого класса дает пару автоматически запускаемых методов, которые вы можете переопределить. Это метод Start(), вызываемый при активации объекта (она, как правило, наступает после загрузки содержащего объект уровня), и вызываемый в каждом кадре метод Update(). Соответственно, код будет запущен, если вставить его в эти предустановленные методы.
Существует шаблон сценария, скрытый в недрах Unity. При создании нового сценария приложение копирует этот шаблон и переименовывает класс в соответствии с именем файла (в моем случае это HelloWorld.cs). Добавляются и пустые оболочки методов Start() и Update(), так как именно из этих методов чаще всего вызывается пользовательский код. Чтобы создать сценарий, откройте меню Assets, наведите указатель мыши на строчку Create и выберите на открывшейся дополнительной панели команду C# Script. Обратите внимание, что как в меню Assets, так и в меню GameObjects есть варианты команды Create, но это разные вещи. Альтернативным способом доступа к нужному нам меню является щелчок правой кнопкой мыши в произвольной точке вкладки Project. Введите имя нового сценария, например HelloWorld. Чуть позже, на рис. 1.15 вы увидите, что можно перетащить файл сценария мышью на произвольный объект сцены. Дважды щелкните на значке сценария, и он автоматически откроется в программе MonoDevelop, о которой мы поговорим ниже.
Команда Debug.Log() выводит сообщение на вкладку Console. Строка с этой командой вставляется в метод Start(), потому что, как упоминалось выше, данный метод одно-кратно вызывается после активации объекта. Другими словами, после нажатия кнопки Play в редакторе метод Start() будет вызван всего один раз. Добавив в сценарий команду регистрации, обязательно сохраните его и нажмите кнопку Play в программе Unity.
5. Планирование трехмерного проекта fps. Трехмерное координатное пространство. Правая и левая системы координат.
Перед тем как приступить к программированию, всегда нужно остановиться и ответить на вопрос «Что я собираюсь построить?». Первым проектом станет создание сцены из шутера от первого лица — мы будем обозначать этот тип игр аббревиатурой FPS (First-Person Shooter). Рисунок 2.2 иллюстрирует сценарий проекта, по сути, представляющий собой придуманный мной перечень действий:
1. Разработка комнаты: создание пола, внешних и внутренних стен.
2. Размещение источников света и камеры.
3. Создание объекта-игрока (в том числе и присоединение камеры к его верхней части).
4. Написание сценариев перемещения: повороты при помощи мыши и перемещения при помощи клавиатуры.
Мы начинаем с игры от первого лица, чтобы снизить требования к художественному оформлению, — в играх от первого лица себя игрок не видит, поэтому вполне допустимо придать персонажу форму цилиндра, на верхней грани которого закреплена камера! Теперь осталось понять, как функционируют трехмерные координаты, и вы сможете легко вставлять объекты в сцены в визуальном редакторе.
Сформулированный нами для начала простой план включает в себя три аспекта:
игровое пространство,
средства наблюдения,
элементы управления.
Для их реализации требуется понимание того, каким образом в трехмерных симуляциях задаются положение и перемещение объектов. Те, кто раньше никогда не сталкивался с трехмерной графикой, вполне могут этого не знать.
Все сводится к числам, указывающим положение точки в пространстве. Сопоставление этих чисел с пространством происходит через оси системы координат. На рис. 2.3 оси X и Y прямоугольная, или декартова, система координат. Две оси дают вам двумерные координаты. Это случай, когда все точки лежат в одной плоскости. Трехмерное пространство задается уже тремя координатными осями. Так как ось X располагается на странице горизонтально, а ось Y — вертикально, третья ось должна как бы «протыкать» страницу, располагаясь перпендикулярно осям X и Y. Рисунок 2.4 демонстрирует оси X, Y и Z для трехмерного координатного пространства. У всех элементов, обладающих определенным положением в сцене (у игрока, у стен и т. п.), будут координаты XYZ. На вкладке Scene в Unity вы видите значок трех осей, а на панели Inspector можно указать три числа, задающих положение объекта. Координаты в трехмерном пространстве вы будете использовать не только при написании кода, определяющего местоположение объектов, но и для указания смещений как значений сдвига вдоль каждой из осей.
ПРАВАЯ И ЛЕВАЯ СИСТЕМЫ КООРДИНАТ
Положительное и отрицательное направления каждой оси выбираются произвольным образом, в обоих случаях система координат прекрасно работает. Главное, используя инструмент для обработки трехмерной графики (инструмент анимации, инструмент разработки и т. п.), всегда выбирать одну и ту же систему координат. Впрочем, практически всегда ось X указывает вправо, а ось Y — вверх; разница между инструментами в основном состоит в том, что где-то ось Z выходит из страницы, а где-то входит в нее. Эти два варианта называют «правой» и «левой» системами координат. Как показано на рисунке на с. 38, если большой палец расположить вдоль оси X, а указательный — вдоль оси Y, средний палец задаст направление оси Z.
В Unity, как и во многих других приложениях для работы с компьютерной графикой, используется левая система координат. Однако существует множество инструментов, в которых применяется правая система координат (например, OpenGL).