[Урок содержит около 50 МБ изображений, включая анимированные GIF-файлы] Чтобы рассказать часть сюжета игры или увлечь игрока, разработчики часто используют кат-сцены.
В некоторых играх создаются специально визуализированные анимированные сцены с очень детализированными моделями, в то время как в других используются реальные внутриигровые модели.
Используя внутриигровые модели, вы можете сэкономить много денег и времени, поскольку вам не нужно создавать новые модели, оснастку и анимацию только для кат-сцен.
Но даже если вы используете готовые модели, это не значит, что нужно жертвовать спецэффектами или драматизмом! В Unity есть мощный инструмент, позволяющий создавать захватывающие кат-сцены — Unity Timeline! В этом уроке вы познакомитесь с Timeline и научитесь создавать ролики с анимацией и сменой камеры.
Давайте начнем
Загрузите пустой проект и готовый проект отсюда .Откройте файл стартового проекта и загрузите главную сцену.
Она будет нашей основой.
На нем изображен герой, стоящий на башне и смотрящий на мир:
С вашей помощью он сможет спрыгнуть с башни, развернуться, подойти к сундуку с сокровищами и открыть его.
Во время этих анимаций камера также меняет свое положение.
Вот как выглядит готовая сцена:
Что такое временная шкала?
В этом уроке мы будем работать с временной шкалой Unity. Но что такое временная шкала? Временная шкала — это GameObject с компонентом временной шкалы, который можно редактировать в окне временной шкалы Unity, который управляет ключевыми кадрами анимации и жизненными циклами объектов.При создании ролика с помощью Unity Timeline мы устанавливаем клавиши анимации и определяем, когда они должны срабатывать.
В этом уроке мы также будем использовать AnimationController, который можно рассматривать как расширенный набор ключевых кадров анимации.
Когда персонаж выполняет анимацию, например ходьбу, каждой отдельной движущейся вершине объекта должен быть задан путь.
В этом уроке мы не будем заниматься созданием модели и оснасткой анимации — все за нас уже сделано.
Но полезно знать, что когда вы вручную устанавливаете ключевой кадр анимации или используете анимацию AnimationController, по сути это одно и то же: положение объектов в данный момент времени.
Временная шкала контролирует все эти движения для создания сцены.
Вы поймете все это, когда начнете понимать Unity Timeline. Но прежде чем приступить к делу, полезно взглянуть на окно временной шкалы.
Посмотрите на изображение и прочитайте описания под цифрами:
Ресурс временной шкалы: это трек, привязанный к GameObject, расположенному в иерархии.
Он хранит ключевые кадры, связанные с этим GameObject, которые используются для выполнения анимации или для определения того, активен ли GameObject. Связанный игровой объект: это GameObject, с которым связана дорожка.
Рамка: это текущий указанный кадр временной шкалы.
Когда нам нужно изменить анимацию, мы устанавливаем ключевые кадры в начальном и конечном кадрах.
Группа треков: По мере увеличения масштаба сцены увеличивается и количество дорожек.
Вы можете организовать треки, сгруппировав их.
Кнопка записи: Когда эта кнопка активна, мы можем изменить текущий кадр и установить положение и/или поворот GameObject в сцене.
Изменения будут зафиксированы.
Значок кривых: При нажатии на этот значок откроется окно «Кривые», в котором вы можете точно настроить детали связанных ключевых кадров анимации, чтобы изменить их по своему усмотрению.
Не волнуйтесь, если эта информация покажется вам на данный момент слишком сложной — мы вернемся к ней по мере прохождения урока.
Самое важное, что нужно помнить на этом этапе, — это то, где находится окно временной шкалы, и что, выбрав временную шкалу GameObject, вы можете получить доступ к окну временной шкалы.
Свет, камера, МОТОР!
После загрузки основной сцены нажмите «Воспроизвести».
Вы должны увидеть героя, стоящего на вершине башни:
Это анимация по умолчанию, установленная в контроллере анимации.
В этом уроке мы будем использовать готовые анимации, поэтому вам не придется беспокоиться о внутреннем устройстве моделей, анимаций или контроллеров.
Но если вы хотите понять этот процесс, вы можете изучить наш урок.
Создание GameObject типа Timeline
Первый шаг — создать GameObject. График .Создать пустой Игровой объект , щелкнув правой кнопкой мыши (на Mac — удерживая нажатой клавишу Command) в окне «Иерархия» и выбрав Создать пустой .
Итак, мы добавим на сцену GameObject и выберем его:
Выделив GameObject, откройте Меню окна и выберите График .
Откроется окно временной шкалы.
Нажимать Создать кнопку , откроется диалоговое окно «Сохранить».
Измените имя файла на Временную шкалу.
и нажмите «Сохранить»:
Переименовать игровой объект В График , нажав на него, нажав клавишу Ф2 и входя График :
Мы создали временную шкалу GameObject, которая будет координировать всю анимацию и изменения камеры в кат-сцене.
Внутри движка Unity сохранила на диск файл ресурсов под названием Timeline.playable. Добавлены компоненты в GameObject Timeline Unity. Играбельный директор И Аниматор .
Компонент Playable Director содержит поле Playable, привязанное к ресурсу Timeline, который мы только что сохранили.
Компонент Animator, добавленный Unity, теоретически должен позволять нам анимировать временную шкалу GameObject, но мы не будем этого делать, поэтому можем просто игнорировать это.
Прежде чем двигаться дальше, я хочу перетащить Вкладка «Временная шкала» в нижнюю часть экрана.
Это позволит нам одновременно открыть окна «Сцена» и «Таймлайн»:
Выберите игровой объект График и вернитесь в окно временной шкалы.
На данный момент у нас есть путь Анимационный трек для временной шкалы GameObject. Он нам не понадобится, поэтому мы можем выбрать его и нажать Удалить , удалить:
Давайте анимируем прыжок!
Теперь мы готовы начать анимацию.Развернуть игровой объект Герой чтобы увидеть GameObject Модель .
Выберите игровой объект График .
Перетащите игровой объект Модель в окно временной шкалы; это откроет меню трека, поэтому выберите Анимационный трек .
Повторите этот шаг для GameObject. Герой :
Примечание: мы добавили и Героя, и Модель, чтобы правильно использовать нулевое локальное пространство.GameObject Hero — это контейнер для модели GameObject, который позволяет воспроизводить анимацию, не затрагивая позицию, с которой она воспроизводится.
Когда нам нужно переместить героя, мы анимируем GameObject Hero. Когда героя нужно анимировать, что также можно сделать во время движения, мы будем использовать модель GameObject. Без этой связи «родитель-потомок» анимация, воспроизводимая объектом «Модель», будет неправильно переопределять параметры движения объекта «Герой», если он не настроен как дочерний элемент.
Запись ключевых кадров
Поскольку дорожка GameObject Hero представляет позицию героя, нам нужно установить ее позицию в качестве начального ключевого кадра.Выберите в окне временной шкалы Трек Герой и нажмите Кнопка записи (красный кружок), чтобы начать запись.
Выбирать GameObject Герой в окне Иерархии и установите его положение X на -1 а потом сразу установите его положение X на 0 .
Вернитесь в окно временной шкалы и нажмите кнопку «Запись» на дорожке героя, чтобы закончить запись .
Вот как мы добавили ключевой кадр для начальной позиции героя:
В нашем проекте герой уже находится в той позиции, с которой ему следует стартовать.
Однако, если мы не изменим положение, оно не будет зарегистрировано как ключевой кадр при записи.
Поэтому, если вам когда-нибудь понадобится установить ключевой кадр во время записи для позиции, в которой уже есть ключевой кадр, просто переместите его и верните назад, чтобы он зарегистрировался.
Самый простой способ сделать это — установить для X-позиции объекта значение -1 относительно его текущей позиции, а затем изменить значение обратно.
В этом уроке мы будем использовать этот трюк несколько раз.
Далее нам нужно, чтобы герой подождал 100 кадров, прежде чем спрыгнуть с башни.
На данный момент мы установили только начальную позицию героя, но нам нужно установить героя в ту же позицию (т.е.
на вершину башни) через 100 кадров.
В противном случае Unity немедленно начнет интерполировать движение.
Как и прежде, выберите Временная шкала игровых объектов , однако на этот раз вам нужно нажать на поле кадра в верхней части окна и введите "100" .
Это переместит ключевой кадр на кадр 100. Нажмите кнопку Записывать Следы героев.
Выберите игровой объект Герой и в поле «Преобразование» окна инспектора.
установите его положение X на -1, а затем немедленно измените его обратно на 0 .
Нажмите кнопку Записывать еще раз, чтобы остановить запись.
Теперь, когда мы настроили первый ключевой кадр Героя, мы готовы продолжить работу с анимацией.
Добавление анимационных клипов
Установка данных о местоположении Сначала нам нужно установить данные позиции.Нажмите на GameObject. График чтобы выбрать его.
В окне «Таймлайн» добавьте анимацию на дорожку модели.
Анимация щелкнув правой кнопкой мыши (на Mac, нажав Command) на дорожке модели и выбрав Добавить из анимационного клипа .
Теперь выберите анимацию Праздный :
Далее мы анимируем прыжок героя с башни, но сначала нам нужно переместить его вверх и через перила, а затем вниз к земле.
Для этого сначала выберите окно временной шкалы, а затем перейдите к кадру.
138 .
Нажмите кнопку «Герой» на треке.
Записывать .
Теперь выберите GameObject Герой .
В поле «Преобразование» окна «Инспектор» установите для параметра «Позиция Y» значение 3,934, а позиция Z — 1,97. .
Вернитесь в окно временной шкалы и перейти к кадру 176 .
Выберите GameObject еще раз.
Герой И установите положение Y на 0 и положение Z на 5,159. .
Завершите запись, нажав кнопку Записывать :
Сохраните сцену и нажмите Играть чтобы увидеть результаты своей работы!
Добавление анимации
Мы указали эти позиции, но не анимацию, которая будет выполняться с ними.
Мы доберемся до этого сейчас.
Выбрав окно временной шкалы, щелкните правой кнопкой мыши (на Mac — щелчок с нажатой клавишей Command) по дорожке.
Модель и нажмите Добавить из анимационного клипа а затем выберите Прыгать .
Это добавит анимацию прыжка сразу после анимации простоя.
Перетащите правую сторону Анимация прыжка чтобы она была в кадре 176 .
Теперь мы добавим еще один Анимационный клип , но на этот раз мы добавим анимацию Земля (вам не нужно менять его длину, просто добавьте):
Сохраните сцену, нажмите Play и посмотрите на результат!
Добавление камер
После прыжка героя с башни немного сложно следить за происходящим, так что сейчас самое время поработать с камерами.В окне Иерархия переименуйте ГлавнаяКамера В Камера1 .
Выберите игровой объект График .
Тащить Камера1 в окно Таймлайн, откроется меню выбора трека; выбирать Трек активации .
Перетащите панель Активный Камера1 отследить так, чтобы она заканчивалась на кадре 157 :
Зацепка: Маркер текущего кадра можно установить с помощью поля счетчика кадров в Инспекторе временной шкалы.Контролирует, является ли GameObject активным или неактивным во время сцены.Если вы поместите маркер на кадр, куда хотите перетащить дорожку, дорожка будет прикреплена к маркеру кадра.
Трек активации .
Наша основная камера теперь выключится после 157 кадра.
Нажмите «Воспроизвести» и посмотрите на результат:
Теперь добавим еще одну камеру, только она будет смотреть сверху вниз, чтобы показать героя после прыжка через перила башни.
В окне Иерархия выберите Камера1 и создайте его дубликат, нажав Control-D (Command-D на Mac).
Переименуйте дубликат в Камера2 И выключать его.
В этом уроке мы используем еще две камеры, поэтому сейчас создадим их, повторив тот же алгоритм; переименуйте их в Camera3 и Camera4 и выключите его.
После этого все игровые объекты «Камера», кроме «Камеры1», должны быть отключены.
Вот как должна выглядеть иерархия:
Теперь мы расположим Camera2. Выбирать Камера2 и в поле «Преобразование» окна инспектора.
установите Y Position на 10,75 и Z Position на 2,84 .
Установите для параметра «Поворот по оси X» значение 79.5 :
Что касается Camera1, выберите окно График и перетащите в него объект из Иерархии Камера2 ; это снова вызовет меню выбора трека, поэтому выберите Трек активации .
Тащить Активная полоса так, чтобы он начался сразу после завершения активации камеры 1 (кадр 158).
Перетащите правую сторону Активные треки для Camera2, чтобы оно заканчивалось кадр 216 .
Сохраните сцену, нажмите «Воспроизвести» и наблюдайте, как в вашей сцене меняются камеры.
Пришло время добраться до сокровищ!
Смотрим на сундук
Теперь, когда наш герой приземлился на землю, ему следует повернуться к сундуку с сокровищами и начать идти.Выберите игровой объект График и установим рамку 202 .
Нажимать Кнопка записи в треке Герой чтобы начать запись.
Выберите игровой объект Герой и в поле «Преобразование» окна инспектора.
установите Y Rotation на -1, а затем немедленно измените значение обратно на 0 чтобы установить начальный ключевой кадр вращения GameObject Hero. После этого снова выберите временную шкалу GameObject и установить кадр 216 .
Снова выберите GameObject Hero и в поле Transform окна инспектора.
установите поворот по оси Y на -90 .
Примечание: Ключевые кадры положения и поворота задаются независимо друг от друга.Кроме того, герой в этот момент должен находиться в состоянии ожидания, поэтому добавьте в трек Модельная анимационная дорожка анимация Праздный и сделать так, чтобы это длилось до кадра 216 :Раньше, когда мы задавали стартовую позицию героя, ключевой кадр для поворота не сохранялся, поэтому нам нужно было установить новый кадр, прежде чем переходить к нужному повороту в сторону сокровища.
Итак, наш герой приземлился и готов искать клад. Пришло время отправиться к нему и открыть сундук! Зацепка: Если дорожка временной шкалы становится слишком большой, вы можете повернуть колесо мыши, чтобы изменить ее масштаб.
Для перемещения влево или вправо нажмите и удерживайте среднюю кнопку мыши, перемещая ее влево или вправо.
Подходим ближе к сокровищу
Выберите игровой объект График и установим рамку 216 .Нажмите на кнопку Записывать на треке Hero, чтобы начать запись.
Выберите игровой объект Герой и в поле «Преобразование» окна «Инспектор» установите значение «Позиция X».
-1 а затем вернуться к 0 чтобы установить ключевой кадр начальной позиции.
Затем на временной шкале выберите кадр на дорожке героя.
361 .
Вернуться к GameObject Герой и в поле «Преобразование» окна «Инспектор» установите значение «Позиция X».
-6 .
Вернитесь на дорожку Hero и завершите запись.
Наконец, дайте объекту модели анимацию.
Ходить , выполнив те же действия, что и раньше, а затем растяните его до кадр 361 :
Вы можете заметить, что кажется, что герой идет сквозь сокровища, но на самом деле это проблема предварительного просмотра временной шкалы, потому что, как мы вскоре увидим, герой подходит прямо к сундуку и останавливается.
Чтобы камера 2 не следовала за всем путем героя, теперь мы можем использовать камеру 3 для съемки из-за спины героя.
Для этого в главном меню окна Иерархия выделите и перетащите Камера3 на игровом объекте Модель , который находится внутри GameObject Hero, чтобы сделать камеру его дочерним элементом.
Набор Камера3 позиция (Х:0, Y:2,06, Z:-2,5) .
Дай ей поворот (Х:0, Я:0, Я:0) .
Иерархия должна выглядеть следующим образом:
Поскольку Camera3 теперь является дочерним элементом модели GameObject, она будет следовать за всеми движениями модели GameObject, глядя на нее сзади.
Однако Camera3 по-прежнему нуждается в отслеживании активации, чтобы гарантировать ее активацию в нужное время.
Перетащите игровой объект Камера3 на временной шкале и выберите Трек активации , как мы это сделали с Camera1 и Camera2. Установить в качестве начального кадра Камера3 конечный кадр Camera2 и как конечный кадр Камера3 набор 361 :
Теперь сохраните сцену, нажмите Играть и посмотрим, что получится:
Мы уже почти все сделали! Теперь герою остаётся открыть сундук.
конечно же, ударив его ногой!
Открытие сундука
Для последнего ракурса мы используем Camera4, настроив ее так же, как и для Camera1 и Camera2. Тащить Камера4 на временной шкале и добавьте Трек активации .Установите открывающую рамку Камера4 до конца фазы активности Camera3 и растянуть ее на кадр 555 .
Это должно выглядеть так:
Добавить анимацию Пинать .
Щелкните правой кнопкой мыши (на Mac нажмите клавишу Command) на дорожке модели.
Выбирать Добавить анимацию из клипа а затем выберите Пинать .
Не меняйте продолжительность.
Трек модели теперь должен выглядеть так:
Нам нужно открыть сундук, поэтому сейчас добавим анимацию крышке.
Настройка этой анимации аналогична тому, что мы делали раньше.
Развернуть игровой объект Низ груди в окне Иерархия.
Перетащите игровой объект Крышка сундука на временной шкале и выберите Анимационный трек .
Установите кадр на временной шкале 389 .
Теперь выберите трек Крышка сундука .
Нажимать Кнопка записи .
Теперь, когда запись идет, выберите GameObject. Крышка сундука в окне «Иерархия» и установите значение «Позиция X».
-1 а затем вернуться в 0 для установки исходного положения.
В окне временной шкалы установите кадр 555 .
Наконец, в поле «Преобразование» окна «Инспектор» установите положение Y. СундукКрышка значение 6 .
Нажмите кнопку еще раз Записывать на дорожке, чтобы закончить запись.
Вот как мы анимируем крышку сундука, чтобы он пролетал сквозь стену.
Теперь вам нужно разместить Камеру4 так, чтобы она находилась над сундуком, когда крышка улетит. Мы снова повторим те же действия, что и для предыдущей камеры, поэтому подробно описывать каждый шаг я не буду.
Присвойте объекту Camera4 положение (X:-9,00, Y:5,4, Z:5,18) .
Установить вращение камеры 4 (Х:90, Я:0, Я:0) .
Как и в случае со всеми другими добавленными камерами, добавление анимации делает сцену более интересной, поэтому стоит увеличить масштаб камеры после открытия сундука.
Выбрать окно График .
Перетащите в него GameObject Камера4 и создать Анимационный трек .
Установить дорожку в кадр 389 .
Нажимать Камера4 дорожка , а затем нажмите кнопку Записывать .
Выберите игровой объект Камера4 .
В поле «Преобразовать» окна инспектора установите X Position на 0, а затем снова -9 .
В окне График перетащите дорожку анимации в кадр 555 .
Наконец, установите положение объекта по оси Y. Камера4 значение 3.74 :
Сцена наконец закончилась.
Нажимать Играть и оцените это!
Управление сложностью: группировка треков
Это была короткая анимация всего с парой «актёров», поэтому нам было довольно легко отслеживать игровые объекты и треки.Но при создании более сложных сцен с множеством движущихся частей и актеров ими становится очень сложно управлять.
Вот почему порядок очень необходим.
Несмотря на то, что сцена уже готова, давайте потратим несколько минут на ее организацию — в будущем вы скажете себе за это спасибо.
Один из способов организовать работу — группировать треки.
Сначала щелкните правой кнопкой мыши под дорожками в Окно временной шкалы и выберите Группа треков .
Нажмите «Группа дорожек» и в Инспекторе измените ее имя на Активации :
Повторите этот процесс и создайте группу треков под названием Анимации .
Временная шкала теперь должна выглядеть так:
Теперь перетащите все треки с активными разделами в Группа активаций и все остальные в Группа анимаций .
Теперь вы можете открывать и закрывать каждую группу для удобства работы с ними:
Не забудьте сохранить свою работу.
Сядьте поудобнее в режиссерское кресло и похлопайте себя по спине: вы закончили свою первую временную шкалу.
Куда идти дальше
Если вы пропустили некоторые части урока, не забывайте, что вы можете скачать как заготовку, так и готовый проект. отсюда .Мы проделали большую работу по созданию кат-сцены, используя анимацию моделей, изменения камер и обновления жизненного цикла объектов, но нам еще многое предстоит изучить.
Одним из наиболее важных аспектов Timeline является создание собственных сценариев, в которых вы можете связать анимацию с кодом, который может выполняться вместе с ней.
Подробнее о скриптах можно узнать Здесь .
Если вам это уже удобно, попробуйте добавить сценарий в сцену после открытия сундука с сокровищами.
Если вы хотите узнать больше об анимации в Unity в целом, ознакомьтесь с нашим замечательным руководством.
Чтобы узнать больше о создании 3D-моделей и окне «Анимация», ознакомьтесь с подробной серией руководств для разработчиков Unity, представленной Здесь .
И наконец, если вы заинтересованы в создании игр, вы можете приобрести нашу книга Unity Games по учебнику .
В ней рассказывается о создании четырёх типов игр с нуля, с подробным описанием каждого этапа процесса.
Теги: #unity #анимации #таймлайн #катсцены #катсцены #Разработка игр #unity
-
Внезапное Майское Обновление
19 Oct, 24 -
Это 1.0.8
19 Oct, 24