УДК 004.9 ББК 77.056с.я92 Г27 MIKE GEIG UNITY 2018 GAME DEVELOPMENT IN 24 HOURS, SAMS TEACH YOURSELF Authorized translation from the English language edition, entitled UNITY 2018 GAME DEVELOPMENT IN 24 HOURS, SAMS TEACH YOURSELF, 3rd Edition by MIKE GEIG, published by Pearson Education, Inc, publishing as Sams Publishing, Copyright © 2018 by Pearson Education. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. RUSSIAN language edition published by Limited Company, Publishing House Eksmo, Copyright © 2019 Г27 Гейг, Майк. Разработка игр на Unity 2018 за 24 часа / Майк Гейг ; [перевод с английского М. А. Райтмана]. — Москва : Эксмо, 2020. — 464 с. — (Мировой компьютерный бестселлер. Геймдизайн). ISBN 978-5-04-105963-7 Unity — невероятно мощный игровой движок, популярный среди разработчиков игр как профессионального, так и любительского уровня. Автор книги — Майк Гейг, руководитель направления информационно-разъяснительной работы в компании Unity Technologies. Эта книга призвана ускорить обучение читателя и дать ему возможность как можно быстрее начать работу с Unity и освоить принципы игрового программирования. Вы не только приобретете теоретические знания об игровом движке Unity, но и создадите небольшое портфолио игр, которое пригодится вам в будущем. УДК 004.9 ББК 77.056с.я92 ISBN 978-5-04-105963-7 © Райтман М.А., перевод на русский язык, 2019 © Оформление. ООО «Издательство «Эксмо», 2020 ПРЕДИСЛОВИЕ 19 Для кого предназначена эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Как организована эта книга Файлы примеров ОБ АВТОРЕ 23 Посвящение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-Й ЧАС. ВВЕДЕНИЕ В UNITY 23 25 Установка Unity . . . . . . . . . . . . Загрузка и установка Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Знакомство с редактором Unity . . . . . . . . Диалоговое окно Project . . . . . . . . . . . . Интерфейс Unity . . . . . . . . . . . . . . . . . . . Панель Project . . . . . . . . . . . . . . . . . . . . . Панель Hierarchy . . . . . . . . . . . . . . . . . . . Панель Inspector . . . . . . . . . . . . . . . . . . . Панель Scene . . . . . . . . . . . . . . . . . . . . . . Панель Game . . . . . . . . . . . . . . . . . . . . . . Важная деталь: панель инструментов Навигация на панели Scene в Unity Инструмент Hand . . . . . . . . . . . . . Режим Flythrough . . . . . . . . . . . . . Резюме 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 26 28 28 30 32 35 36 37 39 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 46 46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-Й ЧАС. ИГРОВЫЕ ОБЪЕКТЫ Измерения и системы координат . . . Что такое D в 3D . . . . . . . . . . . . . . . Использование систем координат 48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 48 49 6 Разработка игр на Unity 2018 за 24 часа Глобальные и локальные координаты Игровые объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Преобразования . . . . . . . . . . . . . . . . . . . . . . Перемещение . . . . . . . . . . . . . . . . . . . . . . Вращение . . . . . . . . . . . . . . . . . . . . . . . . . . Масштабирование . . . . . . . . . . . . . . . . . . «Подводные камни» преобразований . . Расположение гизмо . . . . . . . . . . . . . . . . Преобразования и вложенные объекты Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 54 56 57 58 59 61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 62 62 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-Й ЧАС. МОДЕЛИ, МАТЕРИАЛЫ И ТЕКСТУРЫ Общая информация о моделях Встроенные 3D-объекты . . . Импортирование моделей . Модели и Asset Store . . . . . . . 64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Текстуры, шейдеры и материалы Текстуры . . . . . . . . . . . . . . . . . . Шейдеры . . . . . . . . . . . . . . . . . . Материалы . . . . . . . . . . . . . . . . . И снова о шейдерах . . . . . . . . . Резюме 61 64 66 67 68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 71 71 72 73 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 77 77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-Й ЧАС. ЛАНДШАФТ И ЭЛЕМЕНТЫ ОКРУЖАЮЩЕЙ СРЕДЫ Генерация ландшафта . . . . . . . . . . . . . . . . . . . . . . . Добавление ландшафта в проект . . . . . . . . . . . . Составление карты высот . . . . . . . . . . . . . . . . . . Инструменты для создания ландшафта в Unity Текстуры ландшафта . . . . . . . . . Импорт ассетов ландшафта . Текстурирование ландшафта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 80 81 82 85 88 88 90 Оглавление Генерация деревьев и травы Рисуем деревья . . . . . . . . . Рисуем траву . . . . . . . . . . . Настройки ландшафта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Контроллеры персонажа . . . . . . . . . . . . . Добавление контроллера персонажа Резюме 93 94 95 98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Вопросы и ответы Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . 102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 103 103 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-Й ЧАС. ИСТОЧНИКИ СВЕТА И КАМЕРЫ 105 Источники света . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Запекание и отображение в реальном времени Точечные источники освещения . . . . . . . . . . . . . Прожекторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Направленный свет . . . . . . . . . . . . . . . . . . . . . . . . Создание источников света из объектов . . . . . . Гало . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Камеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Как устроена камера . . . . . . . . . . . . . . . . . . . . Использование нескольких камер . . . . . . . . . Разделение экрана и «картинка-в-картинке» Слои . . . . . . . . . . . . . . . . Работа со слоями . . . Использование слоев Резюме 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 106 107 109 110 111 112 113 115 115 117 118 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 121 122 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение 125 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 125 126 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-Й ЧАС. ИГРА ПЕРВАЯ: «Великолепный гонщик» Проектирование Концепция . . . Правила . . . . . Требования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 128 129 129 130 8 Разработка игр на Unity 2018 за 24 часа Создание игрового мира . Создание мира . . . . . . . Добавление окружения Туман . . . . . . . . . . . . . . . Скайбоксы . . . . . . . . . . . Контроллер персонажа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Игрофикация . . . . . . . . . . . . . . . . . . . . . . . . . . Добавление объектов управления игрой Добавление скриптов . . . . . . . . . . . . . . . . Подключение скриптов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 137 139 141 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Тестирование игрового процесса Резюме 131 131 132 133 134 135 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 144 144 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-Й ЧАС. СКРИПТЫ, ЧАСТЬ 1 146 Скрипты . . . . . . . . . . . . . . . . . . . . . . Создание скриптов . . . . . . . . . . . Назначение скрипта . . . . . . . . . . Структура простого скрипта . . Раздел подключения библиотек Раздел объявления классов . . . . Структура класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Создание переменных . . . . . . . . . . . . . . . . . . . . Область видимости переменной . . . . . . . . . . . Модификаторы доступа public и private Операторы . . . . . . . . . . . . . . . . . Арифметические операторы Операторы присваивания . . Операторы сравнения . . . . . Логические операторы . . . . Условные операторы . . . . . Оператор if . . . . . . . . . . Оператор if/else . . . . Оператор if/else if Циклы . . . . . . . . Цикл while Цикл for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 147 150 151 152 152 152 154 154 155 156 157 157 158 159 160 161 161 162 162 164 164 165 Оглавление Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 168 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ввод данных . . . . . . . . . . . . . . . . . . . . . . Основы ввода данных . . . . . . . . . . . Пользовательский ввод в скриптах Клавиатура . . . . . . . . . . . . . . . . . . . . Мышь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Доступ к локальным компонентам . . . . . . . . . Использование метода GetComponent() Доступ к компоненту Transform . . . . . . . . . . Доступ к другим объектам . . . . . . . . . Поиск других объектов . . . . . . . . . . Изменение компонентов объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 169 171 173 174 175 176 177 179 180 180 181 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 182 185 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Вопросы и ответы Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Твердые тела . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 189 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Активация столкновений Коллайдеры . . . . . . . . . . Физические материалы Триггеры 186 187 187 187 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-Й ЧАС. СТОЛКНОВЕНИЯ 189 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 191 194 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Рейкастинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Вопросы и ответы Семинар 166 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Методы . . . . . . . . . . . . . . . . . Структура метода . . . . . . Написание методов . . . . Использование методов Резюме 165 166 166 167 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-Й ЧАС. СКРИПТЫ, ЧАСТЬ 2 Резюме 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 10 Разработка игр на Unity 2018 за 24 часа Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 201 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-Й ЧАС. ИГРА ВТОРАЯ: «Шар хаоса» Проектирование Концепция . . . Правила . . . . . Требования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Арена . . . . . . . . . . . . . . . . . . . . . . . . . . . . Создание арены . . . . . . . . . . . . . . . . . Текстурирование . . . . . . . . . . . . . . . . Создание сверхупругого материала Финальные штрихи арены . . . . . . . . Игровые сущности Игрок . . . . . . . . . Шары хаоса . . . . Цветные шары . Управление . . . . . Цели . . . . . . . . . Менеджер игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 205 206 207 208 209 209 210 212 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение 217 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 217 217 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-Й ЧАС. ПРЕФАБЫ 219 Введение в префабы . . . . . . Терминология префабов Структура префаба . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Управление префабами . . . . . . . . . . . . . . . . . . . . . . . Добавление экземпляра префаба на сцену . . . . Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Разрыв связи префабов . . . . . . . . . . . . . . . . . . . . . Создание экземпляра префаба с помощью кода Резюме 203 204 204 204 213 213 215 Улучшение игры Резюме 203 219 220 220 . . . . . . . . . . . . . . . . . . . 222 225 227 228 228 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Оглавление Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 230 230 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-Й ЧАС. ИНСТРУМЕНТЫ ДЛЯ СОЗДАНИЯ 2D-ИГР Основы 2D-игр 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Панель Scene в 2D-разработке Ортографические камеры 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Добавление спрайтов . . . . . . . . . . . . . . . . . Импортирование спрайтов . . . . . . . . . . Режимы спрайтов . . . . . . . . . . . . . . . . . . Размеры импортированных спрайтов Порядок отрисовки . . . . . . . Слои сортировки . . . . . . Порядок спрайтов в слое . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2D-физика . . . . . . . . . . . . . . . . . . . . . Компонент Rigidbody в 2D-играх 2D-коллайдеры . . . . . . . . . . . . . . . Резюме 11 237 237 238 240 240 241 243 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 243 244 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 246 246 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-Й ЧАС. ТАЙЛМАПЫ В 2D-ИГРАХ Введение в тайлмапы . Создание тайлмапа Сетка . . . . . . . . . . . . . Палитры . . . . . . . . . . . Панель Tile Palette 248 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Тайлы . . . . . . . . . . . . . . Настройка спрайтов Создание тайла . . . . Нанесение тайлов . . Настройка палитр . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Тайлмапы и физика . . . . . . . . . . . . . . . . . . . . . . . . . . . . Коллайдеры тайлмапов . . . . . . . . . . . . . . . . . . . . . . . Использование компонента Composite Collider 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 249 250 251 252 253 254 254 256 259 260 260 262 12 Разработка игр на Unity 2018 за 24 часа Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение 263 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 264 264 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-Й ЧАС. ПОЛЬЗОВАТЕЛЬСКИЕ ИНТЕРФЕЙСЫ Основные принципы работы с пользовательскими интерфейсами Холст . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Компонент Rect Transform . . . . . . . . . Якорь . . . . . . . . . . . . . . . . . . . . . . . . . . . Дополнительные компоненты холста Режимы рендеринга холста . . . . . Режим Screen Space — Overlay Режим Screen Space — Camera Режим World Space . . . . . . . . . . 265 . . . . . 265 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 267 268 272 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Элементы пользовательского интерфейса Изображения . . . . . . . . . . . . . . . . . . . . . . . Текст . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Кнопки . . . . . . . . . . . . . . . . . . . . . . . . . . . . Событие OnClick() . . . . . . . . . . . . . . . Резюме 263 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 273 274 275 277 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 281 281 282 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 284 284 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-Й ЧАС. ИГРА ТРЕТЬЯ: «Капитан Бластер» Проектирование Концепция . . . Правила . . . . . Требования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Создание игрового мира Камера . . . . . . . . . . . . . Фон . . . . . . . . . . . . . . . . Игровые сущности . . . Игрок . . . . . . . . . . . . . . Метеоры . . . . . . . . . . . . Снаряды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 287 288 288 288 288 289 290 291 291 293 295 Оглавление Триггеры . . . . . . . . . . . . . . . . . . Пользовательский интерфейс Управление . . . . . . . . . . . . . Менеджер игры . . . . . . . . Скрипт для метеора . . . . Спаун метеоров . . . . . . . . Скрипт DestroyOnTrigger Скрипт ShipControl . . . . . Скрипт для снаряда . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 296 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 298 299 300 302 302 304 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Улучшения Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 307 307 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-Й ЧАС. СИСТЕМЫ ЧАСТИЦ 308 Системы частиц . . . . . . . . . . . . . . . . . . . . . . Частицы . . . . . . . . . . . . . . . . . . . . . . . . . . . Системы частиц в Unity . . . . . . . . . . . . . . Элементы управления системой частиц Модули систем частиц . . . . . . . . . . . . Модуль по умолчанию . . . . . . . . . . Модуль Emission . . . . . . . . . . . . . . . Модуль Shape . . . . . . . . . . . . . . . . . Модуль Velocity over Lifetime . . . . . Модуль Limit Velocity over Lifetime Модуль Inherit Velocity . . . . . . . . . . Модуль Force over Lifetime . . . . . . . Модуль Color over Lifetime . . . . . . . Модуль Color by Speed . . . . . . . . . . Модуль Size over Lifetime . . . . . . . . Модуль Size by Speed . . . . . . . . . . . Модуль Rotation over Lifetime . . . . Модуль Rotation by Speed . . . . . . . Модуль External Forces . . . . . . . . . . Модуль Noise . . . . . . . . . . . . . . . . . . Модуль Collision . . . . . . . . . . . . . . . Модуль Triggers . . . . . . . . . . . . . . . . Модуль Sub Emitter . . . . . . . . . . . . . Модуль Texture Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 308 309 310 311 312 314 314 314 315 315 316 316 317 317 317 317 317 318 318 319 321 322 322 14 Разработка игр на Unity 2018 за 24 часа Модуль Lights . . . . . . Модуль Trails . . . . . . Модуль Custom Data Модуль Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 323 323 323 Редактор Curves Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Резюме Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-Й ЧАС. АНИМАЦИЯ 329 Основы анимации Скелет . . . . . . . . . Анимация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Типы анимации . . . . . . 2D-анимация . . . . . . Создание анимации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Инструменты анимации Панель Animation . . . . Создание анимации . . Режим записи . . . . . . . Редактор Curves Editor Резюме 326 327 327 327 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 329 330 331 331 333 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 335 337 339 341 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 343 343 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-Й ЧАС. АНИМАТОРЫ 345 Основы аниматоров . . Немного о скелетах Импорт модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Настройка ассетов . . . . . Подготовка скелета . . Подготовка анимации Создание аниматора Панель Animator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 347 347 349 349 351 357 359 Оглавление Анимация Idle . . . . . . . . . . . . . . . . . Параметры . . . . . . . . . . . . . . . . . . . . Состояния и деревья смешивания Переходы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 361 362 364 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Скрипты для аниматоров Резюме Вопросы и ответы Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . 367 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 367 367 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-Й ЧАС. СИСТЕМА TIMELINE Знакомство с Timeline . . Структура Timeline . . . Создание таймлайнов Работа с таймлайнами Панель Timeline . . . Треки . . . . . . . . . . . . Клипы таймлайнов . 369 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Расширяем границы возможностей . . Смешивание клипов на треке . . . . . Использование скриптов с Timeline Резюме 15 369 370 371 372 372 373 376 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 378 380 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 382 382 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-Й ЧАС. ИГРА ЧЕТВЕРТАЯ: «Бег с препятствиями» Проектирование Концепция . . . Правила . . . . . Требования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Создание игрового мира Сцена . . . . . . . . . . . . . . Полоса препятствий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Прокрутка полосы препятствий Игровые сущности 384 384 385 385 385 386 386 387 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 16 Разработка игр на Unity 2018 за 24 часа Бонусы . . . . . Препятствия Зона-триггер Игрок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Элементы управления . . . . Скрипт зоны-триггера . . Скрипт менеджера игры Скрипт игрока . . . . . . . . . Скрипт Collidable . . . . . . Скрипт Spawner . . . . . . . Собираем все воедино . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Простор для совершенствования Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение 394 394 394 396 398 399 400 401 401 402 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 402 402 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-Й ЧАС. РАБОТА СО ЗВУКОМ 404 Введение в работу со звуком . . . . . . . . . . . . Как устроено звуковое сопровождение 2D- и 3D-Audio . . . . . . . . . . . . . . . . . . . . . Компонент Audio Source . . . . . . . . . . . . . Импорт аудиоклипов . . . . . . . . . . . . . . Тестирование звука на панели Scene 3D-звук . . . . . . . . . . . . . . . . . . . . . . . . . . 2D-звук . . . . . . . . . . . . . . . . . . . . . . . . . . Скрипты озвучки . . . . . . . . . . . . . . . Начало и прекращение звучания Смена аудиоклипов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Аудиомикшеры . . . . . . . . . . . . . . . . . . . . . . . Создание аудиомикшеров . . . . . . . . . . . . Перенаправление звука в аудиомикшер Резюме 389 390 391 391 404 404 406 406 407 408 410 410 411 411 413 . . . . . . . . . . . . . . . . . . . . . . . . . . 413 413 414 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 416 416 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Оглавление 22-Й ЧАС. РАЗРАБОТКА ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ Подготовка к мобильной разработке Настройка среды . . . . . . . . . . . . . . . Unity Remote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Акселерометры . . . . . . . . . . . . . . . . . . . . . . . . Проектирование игр для акселерометра Использование акселерометра . . . . . . . . . Сенсорный ввод . . . . . . . . . . . . . . . . . . . . . Резюме 419 419 420 421 . . . . . . . . . . . . . . . . . . . . . . . . . 423 424 424 425 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Вопросы и ответы Упражнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . 428 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 429 429 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-Й ЧАС. ДОРАБОТКА И РАЗВЕРТКА Управление сценами . . . . . . . . . . . . . . . Создание последовательности сцен Переключение между сценами . . . . Сохранение данных и объектов Сохранение объектов . . . . . . Сохранение данных . . . . . . . . 431 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Настройки проигрывателя Unity . . . . . . . . . . . Кросс-платформенные настройки . . . . . . . . Специфические для платформы настройки Сборка игры . . . . . . . Настройки сборки Настройки игры . . Резюме 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 432 433 434 434 436 438 438 439 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 440 442 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение 444 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 444 444 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-Й ЧАС. ФИНАЛЬНЫЕ ШТРИХИ Наши достижения 446 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Девятнадцать часов обучения Четыре полноценные игры . Более пятидесяти сцен . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 446 448 448 18 Разработка игр на Unity 2018 за 24 часа Куда двигаться дальше Делайте игры . . . . . Работайте с людьми Пишите об этом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 449 449 449 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 Доступные ресурсы Резюме Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Семинар . . . . . . . . . . . . . . Контрольные вопросы Ответы . . . . . . . . . . . . . Упражнение 450 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 451 451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 2-Й ЧАС ' - Что вы узнаете в этом часе X Как работать с двумерной и трехмерной системами координат X Как работать с объектами игры X Как работать с преобразованиями Игровые объекты — основные компоненты проекта Unity. Каждый элемент, который находится на сцене, — это игровой объект или образован от него. В этом часе вы изучите игровые объекты в Unity. Однако сначала вы должны получить представление о двумерной и трехмерной системах координат. Затем мы начнем работу со встроенными в Unity игровыми объектами, а завершим этот час изучением различных преобразований для них. Данная информация лежит в основе всего дальнейшего понимания книги. Уделите время этому разделу и проработайте его как следует. ' За красочной картинкой любой видеоигры всегда стоят математические конструкции. Все свойства, движения и взаимодействия — это в итоге обычные числа. К счастью для вас, большая часть подготовительной работы уже давно выполнена. Математики в течение многих столетий трудились над тем, чтобы обнаружить, изобрести и упростить различные процессы, и теперь благодаря им вы можете легко создавать игры с современным программным обеспечением. Может показаться, что объекты расположены в пространстве случайным образом, но на самом деле каждая игра имеет координатные оси и каждый объект располагается в системе координат (или в сетке). ( D 3D Как мы говорили ранее, в каждой игре есть несколько измерений. Наиболее распространены, скорее всего, знакомые вам двумерная и трехмерная системы Измерения и системы координат 49 (2D и 3D, где D от слова Dimension — измерение). Двумерная система плоская. Здесь у вас есть только вертикальные и горизонтальные элементы (или, иначе говоря, направления вверх, вниз, влево и вправо). Tetris, Pong и Pac Man — отличные примеры 2D-игр. Трехмерная система похожа на двумерную, но в ней, очевидно, на одно измерение больше. В трехмерной системе у вас есть не только горизонталь и вертикаль (направления вверх, вниз, влево и вправо), но еще и глубина (вперед и назад). На рис. 2.1 наглядно показано различие между двумерной плоскостью и трехмерным кубом. Обратите внимание, как добавление оси глубины заставляет трехмерный куб словно «выпирать». Y Y (0,0) Z (0,0) X X Рис. 2.1. Двумерный квадрат в сравнении с трехмерным кубом ПРИМЕЧАНИЕ ! *1 2D 3D Unity — это 3D-движок. Поэтому во всех проектах по умолчанию используются все три измерения. Откроем вам секрет: сегодня уже не существует такого понятия, как истинная 2D-игра. Современные аппаратные средства обрабатывают все как 3D. В 2D-играх ось Z тоже есть, но не используется. Вы можете с удивлением спросить — а зачем мы вообще обсуждаем двумерные системы в этой книге? Правда заключается в том, что даже в 3D-проектах много двумерных элементов. Текстуры, элементы экрана и маппинг работают в двумерной системе. Unity имеет мощный набор инструментов для работы с 2D-играми, и двумерные системы пока еще не канули в Лету. ' * Математический эквивалент системы измерений — система координат. В системе координат используется набор прямых, называемых осями, и позиций, 50 2-Й ЧАС. Игровые объекты называемых точками. Эти оси непосредственно соответствуют измерениям, которые они заменяют. Например, в двумерной системе координат есть оси x и y, которые соответствуют горизонтальному и вертикальному направлению. Если объект движется по горизонтали, мы говорим, что он движется «вдоль оси x». Аналогичным образом, в трехмерной системе координат используются оси x, y и z для обозначения горизонтального, вертикального направлений и глубины. ПРИМЕЧАНИЕ Общие правила записи координат Когда речь идет о положении объекта, мы, как правило, перечисляем его координаты. Но говорить, что объект находится в позиции 2 на оси x и в позиции 4 на оси y — немного громоздко. К счастью, существует сокращенный вариант. В двумерной системе можно записать координаты в виде (х, у), а в трехмерной (x, y, z). Таким образом, для объекта, который находится в позиции 2 на оси x и в позиции 4 на оси y, мы пишем (2, 4). Если этот объект также находится в позиции 10 на оси z, можно было бы написать (2, 4, 10). Y (–3, 3) (2, 2) X (0, 0) (2, –2) Рис. 2.2. Расположение точек по отношению к началу координат В каждой системе координат есть точка, в которой все оси пересекаются. Эта точка называется началом координат, и ее координаты всегда (0, 0) в двумерной Измерения и системы координат 51 системе и (0, 0, 0) — в трехмерной. Это очень важная точка, так как именно от нее отсчитываются все остальные. Координаты любой другой точки — это всего лишь расстояние от начала координат до данной точки вдоль каждой оси. Чем дальше точка от начала координат, тем больше ее координата. Например, если точка перемещается вправо, ее координата x становится больше. Если точка перемещается влево, значение координаты x становится все меньше, пока точка не пересечет начало координат. После этого значение координаты x начинает расти в отрицательную область. Рассмотрим рис. 2.2. В представленной двумерной системе координат определены три точки. Точка (2, 2) на 2 единицы удалена от начала координат вдоль осей x и y. Точка (–3, 3) на 3 единицы левее начала координат и на 3 единицы выше начала координат. Точка (2, −2) смещена на 2 единицы вправо от начала координат и на 2 единицы ниже начала координат. .* * Теперь вы узнали об измерениях игрового мира и о системах координат, которые их определяют. То, с чем мы работали до сих пор, называется глобальной системой координат. В любой момент времени в глобальной системе координат существует только одна ось z, одна ось y и одна ось z. Точно так же есть одно начало координат, от которого отсчитывается положение всех объектов. Здесь для нас новым будет тот факт, что существует еще так называемая локальная система координат. Она уникальна для каждого объекта и полностью обособлена от локальных систем координат других объектов, то есть она имеет собственную ось и начало координат, которые используются только одним конкретным объектом. На рис. 2.3 показаны глобальные и локальные системы координат и отмечены четыре точки, составляющие квадрат, в координатах каждой из этих систем. Y Y (3, 8) (9, 8) (–3, 3) (3, 3) X (3, 2) (0, 0) (9, 2) X (–3, –3) (3, –3) (0, 0) Рис. 2.3. Глобальные координаты (слева) в сравнении с локальными координатами (справа) 52 2-Й ЧАС. Игровые объекты Вы можете спросить — зачем нужна локальная система координат, если и так есть глобальная, которая используется для определения положения объектов. Позже в этом часе мы рассмотрим преобразование игровых объектов и наследование признаков у игровых объектов. Оба эти процесса требуют наличия локальной системы координат. ' - Все формы, модели, освещение, камеры, системы частиц и другие элементы в игре Unity имеют общую черту: они являются игровыми объектами, то есть базовыми элементами любой сцены. Несмотря на простоту, они очень мощные. По сути, игровые объекты — это нечто большее, чем преобразования (о них мы более подробно поговорим далее в этом часе) и контейнеры. Контейнер — это часть игрового объекта, предназначенная для хранения различных компонентов, которые делают объект более динамичным и значимым. Что добавлять в ваши игровые объекты — это ваше дело. Существует много компонентов, которые могут внести огромное разнообразие. Читая эту книгу, вы научитесь использовать их. ПРИМЕЧАНИЕ - Не каждый игровой объект будет изначально пустым. Unity имеет несколько встроенных игровых объектов, которые сразу готовы к использованию. Вы можете найти их, открыв раскрывающийся список GameObject в верхней части редактора Unity. Большую часть времени мы будем учиться работать со встроенными и пользовательскими игровыми объектами. ПРАКТИКУМ & ; - Давайте уделим некоторое время работе с игровыми объектами. Выполните следующие шаги, чтобы создать несколько основных объектов и изучить их различные компоненты. Создайте новый проект или новую сцену в существующем проекте. Добавьте пустой игровой объект, открыв раскрывающийся список GameObject и выбрав команду Create Empty (вы также можете создать пустой игровой объект, нажав сочетание клавиш Ctrl+Shift+N в Windows или +Shift+N в macOS). Посмотрите на панель Inspector и обратите внимание, что игровой объект, который вы только что создали, не имеет никаких компонентов, кроме Transform (а он есть у каждого объекта). Нажмите кнопку Add Component на панели Inspector, чтобы увидеть все компоненты, которые вы можете добавить к объекту. Пока не выбирайте ничего. Преобразования 53 Добавьте в ваш проект куб. Для этого в раскрывающемся списке GameObject установите указатель мыши на пункт 3D Object и выберите вариант Cube из списка. Обратите внимание на компоненты, которые есть у куба, а у пустого игрового объекта отсутствуют. Компоненты mesh делают куб видимым, а компонент collider дает ему способность физически взаимодействовать с другими объектами. Добавьте в свой проект точечный источник света, открыв раскрывающийся список Create на панели Hierarchy и выбрав пункт Light ⇒ Point Light из списка. Обратите внимание, что у точечного источника света только один общий с кубом компонент — Transform. В остальном объект полностью ориентирован на то, чтобы испускать свет. Свет, излучаемый точечным источником, дополняет направленный свет, который присутствует на сцене по умолчанию. Ранее в этом часе вы узнали и изучили различные системы координат и поэкспериментировали с некоторыми игровыми объектами. Теперь соединим одно и другое. При работе с 3D-объектами вы часто слышите термин преобразование (англ. — transform). Все объекты в 3D-пространстве имеют положение, угол поворота и масштаб. Если объединить эти три параметра, вы получите преобразование объекта. Когда нам понадобится изменить их, мы будем говорить «преобразовать». В Unity это реализовано с помощью компонента Transform. Напомню, что компонент Transform — единственный, который есть у каждого игрового объекта, даже у пустого. Благодаря этому компоненту вы можете увидеть текущее состояние объекта и его преобразования. Сейчас это может показаться вам странным, но все довольно просто. Вы разберетесь с этим в кратчайшие сроки. Поскольку преобразование включает в себя положение, угол поворота и масштаб, значит, существуют три способа изменить его: перемещение, вращение и масштабирование. Эти действия можно выполнить с использованием панели Inspector или с помощью соответствующих инструментов. На рис. 2.4 и 2.5 показано, какие компоненты и инструменты панели Inspector соответствуют различным преобразованиям. Перемещение Вращение Масштаб Рис. 2.4. Параметры компонента Transform на панели Inspector 54 2-Й ЧАС. Игровые объекты Перемещение Масштаб Комплексное преобразование Вращение Растягивание Рис. 2.5. Инструменты преобразования ПРИМЕЧАНИЕ 0 Термин Rect (сокращение от Rectangle — прямоугольник) часто встречается у игровых объектов в 2D. Если 2D-объекты, например спрайты, имеют такие же преобразования, как 3D-объекты, вы можете использовать более простой и удобный инструмент Rect, чтобы управлять положением, поворотом и масштабированием одновременно. (Расположение инструмента Rect приведено на рис. 2.5.) Кроме того, объекты пользовательского интерфейса (UI) в Unity имеют еще один тип преобразования, который называется Rect-преобразованием. В часе 14 мы поговорим о нем более подробно. Сейчас нам достаточно понимать, что это 2D-эквивалент обычного преобразования, который применяется исключительно для редактирования пользовательского интерфейса. Процесс изменения координат объекта в трехмерной системе называется перемещением, и это самое простое преобразование, которое можно применить к объекту. Когда мы перемещаем объект, он сдвигается вдоль осей. На рис. 2.6 показано перемещение квадрата вдоль оси x. Рис. 2.6. Пример перемещения Когда вы используете инструмент Translate (клавиша W) на любом объекте, на панели Scene возникают кое-какие изменения. Если конкретно, то появляются три стрелки, направленные от центра объекта по трем осям. Это гизмо перемещения, позволяющий передвигать объекты по сцене. При нажатии и удержании Преобразования 55 любой из этих стрелок они окрашиваются в желтый цвет. Затем, если вы подвинете мышь, объект начнет перемещаться вдоль выбранной оси. На рис. 2.7 показан пример гизмо перемещения. Обратите внимание, что гизмо появляются только на панели Scene. Рис. 2.7. Гизмо перемещения СОВЕТ Transform # В Unity предусмотрено два способа управлять преобразованием объектов. Важно знать, когда использовать каждый из них. При изменении преобразования объекта на панели Scene с помощью инструмента преобразования вы также изменяете значения параметров, перечисленных на панели Inspector. Часто бывает проще вносить изменения в преобразования объекта с помощью панели Inspector: так вы непосредственно указываете требуемые значения. В то же время инструменты преобразования более полезны для внесения оперативных и небольших изменений. Если вы научитесь применять оба способа, ваша работа станет значительно легче. 56 2-Й ЧАС. Игровые объекты Когда мы вращаем объект, он не перемещается в пространстве. Вместо этого изменяется положение объекта по отношению к пространству. Проще говоря, вращение позволяет переопределить направления осей x, y и z для конкретного объекта. На рис. 2.8 показан пример вращения квадрата вокруг оси z. Рис. 2.8. Вращение вокруг оси z СОВЕТ Если вы не знаете, вокруг которой из осей нужно повернуть объект, чтобы получить желаемый эффект, вы можете использовать простой мысленный трюк. Выберите ось и представьте, что объект зафиксирован на месте с помощью штифта, установленного параллельно этой оси. Объект может вращаться только вокруг этого самого штифта. Теперь определите, какой именно штифт позволит объекту вращаться так, как вам нужно. Это и будет ось, относительно которой вам нужно повернуть объект. Так же, как и в случае с инструментом Translate, вы можете выбрать инструмент Rotate (клавиша E), чтобы вокруг объекта появился гизмо вращения. Такие гизмо представляют собой окружности вращения объекта вокруг осей. При нажатии и удержании любой окружности она окрашивается в желтый цвет, и после этого вы сможете вращать объект относительно выбранной оси. На рис. 2.9 показано, как выглядит гизмо вращения. Преобразования 57 Рис. 2.9. Гизмо инструмента Rotate < 1 Масштабирование — это увеличение или уменьшение объекта в 3D-пространстве. Такое преобразование вполне понятно и просто в использовании. Масштабирование объекта относительно любой оси приводит к изменению размера объекта относительно этой оси. На рис. 2.10 показано уменьшение квадрата относительно осей x и y. На рис. 2.11 показан гизмо масштабирования, который появляется, когда вы выбираете инструмент Scaling (клавиша R). Рис. 2.10. Масштабирование по осям x и y 58 2-Й ЧАС. Игровые объекты Рис. 2.11. Гизмо масштабирования Как упоминалось ранее в этом часе, в преобразованиях используется локальная система координат. Таким образом, внесенные изменения могут повлиять на будущие преобразования. Например, на рис. 2.12 показано, как одни и те же преобразования, выполненные в обратном порядке, дают в итоге разный результат. Рис. 2.12. Влияние последовательности выполнения преобразований на результат Преобразования 59 Как видно из рисунка, пренебрежение правильным порядком преобразований может привести к неожиданным последствиям. К счастью, результаты преобразований предсказуемые, их можно запланировать. XПеремещение. Перемещение — это довольно инертное преобразование. То есть любые последующие изменения, как правило, от его результата не страдают. XВращение. Вращение изменяет ориентацию локальной системы. Любые перемещения, выполненные после вращения, происходят уже по новым осям. Если вы захотите, например, повернуть объект на 180 градусов вокруг оси z, а затем переместить его в положительном направлении у, то объект будет двигаться вниз, а не вверх. XМасштабирование. Масштабирование изменяет размер локальной координатной сетки. Это значит, что, масштабируя объект, вы на самом деле увеличиваете его локальную систему координат. В результате объект увеличивается в размере. Это изменение мультипликативно. Например, если объекту задать масштаб 1 (его естественный размер по умолчанию), а затем переместить на 5 единиц вдоль оси x, то объект переместится на 5 единиц вправо. Если же задать объекту масштаб 2, а затем переместить на 5 единиц вдоль оси x, то он визуально переместится на 10 единиц вправо. Это связано с тем, что локальная система координат стала вдвое больше, а 5 × 2 = 10. И наоборот, если задать объекту масштаб 0,5, а затем переместить, он визуально переместится на 2,5 единицы (0,5 × 5 = 2,5). Когда вы поймете эти правила, вам будет легче вычислить, как именно объект изменится после ваших преобразований. Эффекты зависят от выбора параметра Local или Global, и к ним придется привыкнуть, поэтому вам стоит поэкспериментировать. СОВЕТ # ) Последний инструмент сцены на панели инструментов называется Composite (клавиша Y). Он позволяет одновременно перемещать, вращать и масштабировать 3D-объект. 8 $ Настройки расположения гизмо могут показаться новому пользователю непонятными, если он не знает, как они работают. Фактически они определяют положение и выравнивание гизмо преобразований на панели Scene. На рис. 2.13 показано, как выравнивание гизмо перемещения изменяется в зависимости от того, выбрали вы локальное или глобальное пространство координат. 60 2-Й ЧАС. Игровые объекты Кроме того, на рис. 2.14 показано, как изменяется расположение гизмо, если вы выбрали сразу несколько объектов. Если работает настройка Pivot, гизмо располагается по центру первого выбранного объекта. При настройке Center гизмо располагается и работает в общем центре всех выбранных объектов. Рис. 2.13. Расположение гизмо при выбранных настройках Local и Global Рис. 2.14. Расположение гизмо при выбранных настройках Pivot и Center В целом, вам следует выбирать настройки Pivot и Local, чтобы избежать путаницы и облегчить свою повседневную работу в Unity. Резюме 61 $ - В часе 1 вы узнали, как вложить игровые объекты один в другой на панели Hierarchy (путем перетаскивания одного объекта на другой). Напомню, что при этом объект верхнего уровня называется родительским, а другой — дочерним. Преобразования, применяемые к родительскому объекту, работают обычным образом. Объект можно перемещать, масштабировать и вращать. А вот у дочерних объектов есть особенности. У вложенного дочернего объекта преобразования применяются уже относительно родительского объекта, а не относительно глобального пространства. Таким образом, положение дочернего объекта отсчитывается не от начала координат, а от родительского объекта. Если родительский объект вращается, дочерний объект так же перемещается вместе с ним. Но при этом числовые значения углового положения дочернего объекта не изменяются. То же самое касается и масштабирования. При масштабировании родительского объекта дочерний объект тоже изменяется в размерах. Но числовой масштаб дочернего объекта остается прежним. Вас это, наверное, путает. Помните, что преобразования применяются не к объекту, а к системе координат объекта. Поворачивается не объект — поворачивается его система координат. Когда система координат дочернего объекта привязана к локальной системе координат родителя, любые изменения в родительской системе координат непосредственно влияют на дочерний объект (при этом в параметрах дочернего объекта изменений не возникает). 89 В этом часе вы узнали все об игровых объектах в Unity. Сначала мы изучили различия между 2D и 3D. Затем мы поговорили о системах координат и о том, как они математически описывают мир. Затем мы начали работать с игровыми объектами, в том числе с некоторыми из встроенных в Unity объектов. В конце мы изучили три типа преобразований игровых объектов. Вам обязательно нужно поэкспериментировать с преобразованиями, узнать о некоторых возможных опасностях и посмотреть, как преобразования влияют на вложенные объекты. Вопрос: Важно ли понимать, в чем разница между 2D и 3D? Ответ: Да. Даже полностью трехмерные игры до сих пор на техническом уровне задействуют некоторые понятия, связанные с 2D. Вопрос: Нужно ли мне срочно научиться использовать все встроенные игровые объекты?