- •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
- •Переключение между звуком шагов и реактивного ранца
- •Задание переменных сценария «Шаг» и «полет»
31. Игра в стиле jetpack joyride в Unity 2d. Добавление лазеров в игру. Скрипт для включения, выключения, переключения и вращения лазеров. Настройка параметров этого скрипта.
Добавление лазеров в игру
Шаги, необходимые для создания лазера:
Выберите спрайт laser_on в папке Sprites на панели Project и переместите его в сцену.
Переименуйте laser_on в Иерхархии в laser.
Поставьте в соответствие Sprite Renderer Sorting Layer в Objects.
Добавьте компонент Box Collider 2D.
Активируйте чекбокс Is Trigger в данном компоненте.
Отредактируйте размер коллайдера: X = 0.18, Y = 3.1. Это позволит создать коллайдер в самом лазере, минуя эмиттеры на концах.
Создайте новый скрипт LaserScript и присоедините его к laser.
Скрипт для включения, выключения, переключения и вращения лазеров
Откройте только что созданный скрипт и добавьте следующие переменные:
Лазер может находиться в двух состояниях: включен и выключен. Это характеризуется различными спрайтами.
toggleInterval обозначает интервал времени для перехода лазера между состояниями. rotationSpeed характеризует скорость вращения лазера.
Здесь isLaserOn характеризуют текущее состояние лазера, а timeUntilNextToggle хранит в себе время до следующего изменения состояния.
Эти две переменные содержат ссылки на коллайдер лазера и его рендер, дабы через них менять свойства самого лазера.
Добавьте следующий код в метод Start() нашего скрипта:
Это установит время, по истечении которого лазер впервые переключится в свое состояние.
Здесь мы сохраняем ссылки на коллайдер и рендерер, так как вам нужно будет настраивать их свойства с течением времени.
Для изменения состояния лазера и его вращения добавьте следующий код в метод Update() нашего скрипта:
Декрементируем время, прошедшее с момента отрисовки последнего кадра.
Если время ожидания состояния подошло к концу — значит необходимо изменить состояния лазера.
Инвертирует состояние лазера.
Активируем/деактивируем коллайдера лазера.
Устанавливаем соответствующий спрайт.
Обновляем значения времени ожидания следующего состояния.
Вращаем лазер.
Настройка параметров этого скрипта
Вернёмся в окно Unity и выберем laser на панели Иерархии. Убедитесь, что компонент скрипта лазера виден. Переместите спрайты laser_on и laser_off на свойства Laser On Sprite и Laser Off Sprite соответственно на панели Инспектора. Установите Rotation Speed значение в 30. Теперь поставьте лазер в позицию (2, 0.25, 0), запустите сцену и убедитесь в корректности работы лазера.
32. Игра в стиле jetpack joyride в Unity 2d. Реализация скрипта, описывающего смерть мыши. Добавление анимаций Fall и Die, переходы между ними, триггер при смерти мыши.
Реализация скрипта, описывающего смерть мыши
Сейчас мышка просто проходит через лазеры, никаких на них не реагируя. Самое время исправить это. Добавьте в MouseController новое поле:
Эта переменная будет хранить текущее значение состояния игрока. Значение true означает, что игрок не будет иметь возможности активировать джетпак, двигаться вперёд или делать что-либо ещё.
Добавьте следующие два метода в MouseController:
Первый метод вызывается, когда коллайдер мыши сталкивается с любым лазером. Он же вызывает второй метод, который просто устанавливает значение true в переменную состояния.
Теперь, когда мышка мертва, она не должна двигаться вперёд или летать, используя джетпак. Измените метод FixedUpdate() на следующий блок кода, чтобы это реализовать:
Обратите внимание, что jetpackActive теперь всегда false, когда мышка мертва. Это означает, что она не будет иметь возможность получить дополнительную силу для своего Rigidbody. Кроме того, проходя через метод AdjustJetpack() мы тут же выключаем систему частиц. Теперь же, запустив сцену, вы увидите, что мышь, фактически, парализуется, проигрывая анимацию перемещения. Это говорит о том, что нам необходимо добавить анимации падения и смерти мышки.
Добавление анимаций Fall и Die, переходы между ними, триггер при смерти мыши
Выберите mouse на панели Иерархии и откройте окно Animation. Создайте новую анимацию и назовите её die. Сохраните анимацию в папке Animations.
Откройте папку Sprites на панели Project.
Выберите и переместите спрайты mouse_die_0 и mouse_die_1 на таймлайн окна Animation.
Установите количество кадров в значение 8.
Создайте аналогичным образом анимацию fall с соответствующим спрайтом.
После создания анимации необходимо скорректировать переключение анимации нашей мышки в окне Animator. Для этого мы будем использовать специальное состояние анимации, называемое “Any State”, которое характеризует любое текущее состояние анимации.
Мы не случайно создали анимации fall и die. Первая вызывается, если мышка погибнет в полёте, после чего должна проиграться анимация её падения на пол. Данная стадия должна пропускаться, если мышка погибла при перемещении на полу. В обоих случаях, в конце должна проиграться вторая анимация.
Для этого мы создадим новый параметр в окне Animator. Нажмите на иконку плюсика, добавьте новый bool-параметр и назовите его isDead.
Далее создайте переход из “Any State” в fall.
Выберите переход (нажмите левой кнопкой мыши на появившейся стрелке) и на панели Инспектора в секции Conditions добавьте два параметра: isDead и isGrounded. Установите значение первого параметра в true, а второй в false.
Далее создайте новый переход из “Any State” в die. Выберите данный переход и добавьте те же два параметра: isDead (true), isGrounded (true).
Теперь необходимо программно изменять состояния данных параметров. Для этого добавьте в метод HitByLaser() скрипта MouseController следующую строку:
Таким образом мы изменяем состояние параметра isDead на true.
Запустите сцену и влетите в активированный лазер. Как можно заметить, анимация использует самоповторение, чего быть не должно. Это происходит по той причине, что “Any State” активирует переход в die в бесконечном цикле, так как наши bool-параметры постоянно true, что и активирует данный переход.
Исправим это, используя Trigger. Этот тип параметров очень схож с bool-параметрами, за исключением того, что такие параметры автоматически сбрасываются после использования.
Откройте окно Animator, добавьте новый trigger-параметр и назовите его dieOnceTrigger. Установите его в активное положение, нажав на круговую кнопку справа от него.
Далее, выберите переход от “Any State” к die и добавьте dieOnceTrigger в секцию Conditions.
Далее откройте папку Animations и выберите анимацию die. В окне инспектора деактивируйте чекбокс Loop Time, дабы отключить самоповторение анимации.