unity кат сцена и timeline

unity кат сцена и timeline17:16

Информация о загрузке и деталях видео unity кат сцена и timeline

Автор:

Maximple

Дата публикации:

11.01.2022

Просмотров:

20.5K

Транскрибация видео

Привет!

В этом видео я вам покажу, как сделать такую вот кат-сцену со звуками и вот такими анимациями, которые у нас будут проигрываться до того, как у нас появится наше главное меню.

И желаю вам приятного просмотра!

Для нашей катсцены я подготовил вот такую сцену, просто с тирейном, с какими-то деревьями, и построил домик.

А тут в домике есть персонаж, который будет идти нам навстречу.

И смотрите, как я придумал.

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

Открывалась параллельно с этим дверь, наш персонаж выходил.

Пока открывается дверь, выполнялся какой-нибудь particle effect.

И потом, как только у нас закончилась наша катсцена, то у нас появляется меню.

Что ж, давайте приступим.

Для того, чтобы начать создать наш timeline, нужно сделать пустой объект.

Его как-нибудь можно назвать по-любому.

И потом нужно открыть вот это Timeline Tab.

Если у вас его здесь нет, то зайдите в Window, Sequencing и Timeline.

Выделите пустой объект и нажмите Create.

У нас создастся новый Timeline Playable.

Его можно куда-нибудь сохранить.

Я его просто сохраню в главную папку ассетов.

Как-нибудь назовем это Menu Playable.

И смотрите, у нас на таймлайне появился аниматор.

Поскольку мы таймлайн не будем анимировать, можно его отсюда убрать.

И можно убрать вот этот трек.

И давайте пройдемся по всем трекам, которые здесь есть.

Во-первых, есть такая штука как ActivationTrack.

Она отвечает за то, что будет происходить с GameObject, который мы сюда вставим.

А именно, оно будет его активировать или деактивировать.

И у нас здесь есть такой объект.

Вот такой вот объект.

Это у нас smoke, который будет происходить, когда мы будем открывать дверь.

Я ничего лучшего не нашел.

Просто хочу для примера вам показать, как работает вот этот track.

То есть, когда у нас будет открываться дверь, мы его будем включать.

И потом, как только закончится его время быть активированным, мы хотим его выключать, чтобы он больше не мешал нам.

Для этого мы можем кликнуть вот по этой свободной части в этом треке, и здесь будет такая штука как «Post Playback State».

В нем есть такие вот четыре опции.

Active, то есть что с ним будет происходить после того, как у нас выполнится вот эта вот active часть.

И здесь, например, если мы ставим leave as is, то есть если он активирован был, то он останется активированным.

Если он, когда мы выходим за пределы этого active, мы хотим, чтобы он был active, то мы ставим сюда тоже active.

Если мы хотим, чтобы он выключился, мы ставим Inactive.

Если мы хотим, чтобы он стал тем, каким он был до этого, то мы ставим Revert.

А вот, давайте поставим inactive, поскольку мы хотим его выключить после завершения вот этого всего дела.

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

Все, первую часть мы сделали.

Потом, когда мы сделаем открытие двери, то мы настроим его еще получше, чтобы он открывался, чтобы проигрывался этот партикал именно тогда, когда мы открываем дверь.

Теперь рассмотрим Animation Track.

Он работает таким образом.

Мы сюда можем перенести объект с аниматором.

Например, вот эту дверь.

На ней есть аниматор, поэтому мы ее можем перенести на наш Timeline.

Вот Doors.

И сюда, если мы правой кнопкой мыши нажмем, мы можем нажать Add from Animation Clip.

И у нас есть такая анимация Open, насколько я помню.

Как-то она вот, да, Open.

Видите, у нас открылась дверь здесь.

И потом у нее есть также, как видите, опции, которые будут с ней происходить, насколько я понимаю.

Они у нас расположены вот здесь.

Вот это Animation Extrapolation.

То есть Pre-Extrapolate это то, что происходит до вот этой опции.

анимации open, а post extrapolate это то, что происходит после.

И, например, здесь есть у нас hold, то есть оно просто замирает после того, как выполнило эту анимацию.

Она также может loop, то есть оно постоянно может проигрываться у нас, постоянно будет открываться и закрываться дверь.

Оно может у нас ping-pong, то есть оно открылось, закрылось, открылось, закрылось.

Оно похоже чем-то на loop, но только loop, если вы присмотритесь, он...

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

Можно добавить, здесь есть Blend Curves, это мы рассмотрим попозже с персонажем.

Окей, теперь у нас открывается дверь, и у нас есть вот этот вот Particle Effect, мы их можем совместить, чтобы у нас происходило это все в одно и то же время.

Например, после какой-то паузы.

На 30 кадре у нас проиграется Particle и откроется дверь.

Как-нибудь вот так мы сделаем это.

Посмотрим, как выглядит это в игре.

Камера у нас стоит вроде правильно.

Так вот, у нас автоматически должен проиграться этот ассет.

И вот все получилось.

Классно.

Теперь давайте добавим еще один Animation Track, но уже для нашего персонажа.

И перенесем его вот сюда.

И смотрите, мы хотим, чтобы после того, как открылась дверь, наш персонаж пошел вперед.

И до этого, чтобы у него проигрывалась какая-то анимация Idol.

Давайте для этого...

Здесь выберем Add from Animation Clip.

У него здесь какая-то есть анимация Walk.

А именно, вот еще важная деталь, я скачал анимацию Interwalk с этого Mixamo.

И вы, возможно, спросите, зачем, ведь у меня уже есть анимация ходьбы нашего персонажа.

Но проблема в том, что наша анимация ходьбы у нас выглядит вот так.

У нее я поставил галочку In Place.

Поэтому наш персонаж здесь идет на месте.

Но когда мы эту анимацию бы поставили в timeline, дайте я продемонстрирую вам, у нас это вроде walking называется.

И еще одна, кстати, проблема появилась.

У нас персонаж телепортировался на позицию 0,0,0, если не ошибаюсь.

Что нам совершенно не нужно.

И это происходит из-за вот этого track offsets.

Нам нужно его поставить на apply scene offsets.

Тогда наш персонаж вернется в свою начальную позицию.

также давайте посмотрим теперь вот на то как выглядит эта анимация walking он просто идет на месте и это совершенно не то что нам нужно поэтому эту анимацию нужно заменить было анимацией без in place чтобы он мог ходить

у нас в нашем таймлайне.

И надо обязательно поставить в видеокарактере нашим персонажем Apply Root Motion.

Иначе, мне кажется, он тоже не будет ходить.

Давайте опять перейдем в таймлайн и уже добавим правильную анимацию, у которой есть как бы информация про движение вперед Root Motion.

Она вроде называется у меня Intro Walk.

Вот.

И теперь...

Как видите, он у нас идет вперед.

Но только он потом, видите, hold, и все, как бы ничего дальше не происходит.

И это как бы не круто.

И если мы continue зажмем, то он будет просто постоянно идти.

Интересно.

И нам это не нужно.

тоже не надо но и нам тоже не подходит то есть нам нужно проигрывать другую анимацию чтобы он перешел на прям в анимацию idol вот он пусть сюда дойдет и потом перейдет в idol как нам это сделать поскольку idol у нас как бы он так стоит на месте и не двигается можно просто добавить его с

айдол, который у нас есть в самих анимациях движения персонажа.

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

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

но я не нашел никакой другой никакого другого решения проблемы кроме как изменить вот эту позицию его по z как бы там где он должен оказаться то есть вот примерно вот так сейчас можно чуть вперед даже подвинуть и

Ну да, где-то так.

И смотрите, видите, он переходит из анимации в анимацию очень резко.

Поэтому мы можем вдвинуть анимацию Idol в Intro Walk, и тогда оно медленно, как бы, видите, вольется в эту анимацию Idol.

И если вы видите вот такой foot sliding, то есть его ноги скользят по земле, то можно подвинуть, опять же, персонажа чуть-чуть назад, вперед, вправо, влево, чтобы этого не было.

Можно чуть-чуть подвинуть его влево тоже, я думаю.

Потому что я вот видел, что он чуть-чуть влево убирался.

Вот.

И тогда теперь, когда мы проигрываем анимацию, оно выглядит более мягко.

И можно даже еще чуть-чуть подвинуть.

Надо поэкспериментировать.

Вот.

И уже выглядит, в общем-то, ничего.

Посмотрим.

А, видите, а здесь у него анимация вот такая вот.

Поэтому idle как раз можно поставить и до начала.

Здесь можно его просто скопировать и поставить сюда в начало.

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

И теперь...

Наш персонаж вот так вот будет стоять.

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

Вот, можно теперь спокойно так все написать.

И вот он пройдется и остановится.

Отлично.

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

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

Давайте теперь сделаем так, чтобы, например, ну, наша камера вот была...

не изначально в этой позиции, а куда-нибудь издалека прилетала.

Мы берем главную камеру, сначала добавляем для нее Animation Track, то есть в нее нужно создать для нее аниматор, потом берем какой-нибудь первый кадр, выбираем

получается камеру двигаем ее назад то есть вот как иметь ее начальная позиция потом вот когда мы уже встаем на место то просто приближаем ее обратно вот как-нибудь вот так и где-то тут нами будет появляться меню когда мы закончили анимацию просто включаем эту кнопку и теперь смотрите вот у нас

Как она выглядит?

Просто двигается камера вперед.

Вот как только наш персонаж пришел, все.

Оно работает.

Idol можно здесь сделать поменьше, потому что после анимации у нас просто пойдет игра.

Давайте посмотрим, что получилось уже.

В общем-то, меня устроил бы и такой результат.

Вот как эпично.

Вот и потом все, у него проигрывается его анимация, и тут можно в меню что-то будет выбрать потом.

Еще один трек, который я хочу вам показать, это Audio Track.

И он используется для звука.

То есть нам можно указать здесь Audio Source, и потом указать звук, который мы хотим, чтобы здесь проигрался.

Например, мы можем добавить Audio Source на нашу главную камеру, потом выберем наш таймлайн, перенесем сюда камеру,

И теперь про кнопку мыши.

Мы также можем нажать Add from Audio Clip.

Я скачал тут такой звук открытия двери из интернета.

Дважды по нему нажимаем, и он здесь появляется у нас.

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

И как видите, здесь показывается вот именно где он начинается.

То есть можно его, например, подвинуть чуть-чуть назад.

Вот так.

То есть когда у нас Active, вот уже есть какой-то звук.

И вот она будет так вот открываться.

И можно, например, Speed Multiplier поставить на 2, чтобы она стала короче.

Потому что, видите, у нас анимация двери заканчивается уже тут.

И нам не нужно, чтобы этот звук был настолько долгим.

И вы его не будете слышать на сцене, вы его только можете услышать в игре.

То есть надо нажать на эту кнопку, play, и давайте послушаем.

Ну вот, что-то такое.

Можно, конечно, и получше было найти звук, но он работает.

Отлично.

Если вы хотите, чтобы он постоянно проигрывался, то вот можно Loop поставить.

Теперь давайте рассмотрим еще один Track.

Довольно важный.

И, возможно, я его буду использовать для активации нашего меню.

Называется Signal Track.

Полезно знать, что это такое.

Здесь, смотрите, нам нужен Signal Receiver.

Это может быть любой объект.

хоть сам таймлайн или камера.

Давайте я вам покажу.

Ну или давайте создадим канвас, потому что канвас у нас по-любому будет использоваться в меню.

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

И, например, мы сделаем так.

Сейчас, где у нас кнопка?

Вот.

Сделаем так, чтобы когда...

Так, сейчас я сначала вам покажу, как настраивается он.

Вот, мы можем перенести сюда Canvas, оно нам предложит создать Signal Receiver на Canvas.

И по-любому этот Canvas должен быть включен, потому что если мы его выключим, то, видите, у нас будет такая вот ошибка, что The Bound Game Object is Disabled, и у нас бы выдалась ошибка.

Поэтому объект, который принимает сигнал, должен быть включен.

И потом, что мы можем сделать на этом треке?

Мы можем здесь добавить SignalEmitter.

Вот у нас будет выглядеть вот так.

И ему нужен сигнал какой-то.

Нам нужно создать для этого SignalAsset.

И этот SignalAsset давайте поместим в эту главную папку проекта и назовем его как-нибудь типа LoadMenu.

И когда этот сигнал будет выслан именно вот в этот момент,

то тогда у нас что-то произойдет здесь.

Наш Signal Receiver что-то сделает.

То есть мы можем сюда вставить Canvas или House или Directional Light и выполнить какую-то функцию на нем.

То есть что в этот момент мы хотим, чтобы произошло в нашей игре.

И мы можем это сделать для нескольких объектов одновременно.

Ну то есть это по сути как Button в UI.

Вот если мы зайдем сюда, то видите, мы тоже можем добавить, что здесь произойдет с ней.

И как бы вот...

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

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

Ну, в нашем случае пусть просто появилась кнопка.

Поэтому мы ее можем перенести вот сюда.

И поставить здесь, например, GameObject из Active равно True.

Вот.

И теперь, когда мы запустим нашу игру, наш таймлайн...

Давайте посмотрим включится ли у нас кнопка.

И да, она у нас включилась, и вот это будет, например, наше меню.

И также можно проигрывать любую функцию, которая висит на объекте, который мы сюда добавили.

То есть это довольно удобная штука.

И, например, если мы создадим еще один сигнал-эмиттер, то мы можем тот же LoadMenu загрузить, и у нас будут те же самые штуки, которые мы и ставили здесь.

Вот так.

Я надеюсь, это видео вам было полезным.

В следующем видео мы посмотрим, как сделать главное меню для нашей игры.

И если вам понравилось видео, поставьте лайк, подпишитесь на канал.

Я желаю вам хорошего дня.