Тёмный

Unity 3D: 10 способов создания анимации [Tutorial] 

Emerald Powder
Подписаться 77 тыс.
Просмотров 70 тыс.
50% 1

В геймдеве одна из самых частых задач - это что-нибудь проанимировать. Так как игру хочется сделать сочной и приятной глазу, а появление и изменение объектов естественным, то анимируются всякие выезжающие панельки, кнопки, элементы интерфейса, положение внутриигровых объектов, их цвет и размер, а иногда и другие гейплейные параметры. В этом видео я расскажу про разные способы анимировать разные параметры, скажу про их плюсы и минусы, и расскажу ещё о нескольких смежных фичах
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

Опубликовано:

 

11 июл 2019

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 86   
@EmeraldPowder
@EmeraldPowder 5 лет назад
Кстати функции Lerp есть у классов Vector3, Vector2, Quaternion, Color, Mathf.Lerp для чисел (float), про который не все знают, и material.Lerp. И почти у всех из них ещё есть MoveTowards А ещё есть 11 способ - функция SmoothDamp, которая собственно для анимации и предназначена, но я про неё совсем забыл когда делал видео..
@Tin_Lord
@Tin_Lord 3 года назад
Ещё можно было в аниматоре по-кадровую анимацию показать, но в этом случае с машинкой это из разряда частиц)
@n0ra754
@n0ra754 5 лет назад
Это лучший канал по Unity! Хоть кто то дает много действительно полезной информации без пустой болтовни.
@glebster51
@glebster51 4 года назад
*без пустой болтовни, макарошек и временами уток)
@mrybs
@mrybs 3 года назад
Coглaceн
@user-yn6np8xi7k
@user-yn6np8xi7k 4 года назад
Автор делится своими реальными наработками и делает это максимально просто и открыто. Спасибо ему за это! Редко такой альтруистический подход можно встретить на просторах ютуба. Однозначно подписка. P.S.: продолжай в том же духе!
@Ivan_Larsen
@Ivan_Larsen 8 дней назад
Вау! Столько годной информации! Спасибо за видео! Хотелось бы, чтобы канал "ожил". Всего Вам наилучшего!
@denb6215
@denb6215 4 года назад
Боже где вы были раньше. Лайк и подписка, продолжайте в том же духе. Особенно по теме 2D
@emche852
@emche852 5 лет назад
Много полезной инфы) Удивительно, но для меня стало откровением, что материалы можно анимировать :D Всегда это через код делал, а так удобнее и прикольнее)
@EmeraldPowder
@EmeraldPowder 5 лет назад
Да, я вот тоже недавно узнал совершенно случайно, думал что свойства скрипта можно анимировать, максимум переключать материал, но что-то натыкал и очень удивился когда у меня цвет через материал заданый начал меняться)
@MrRomanba
@MrRomanba 3 года назад
Анимация машинки через систему частиц была неожиданной :D Спасибо за видео, очень доходчиво и подробно объяснил!
@deni9652
@deni9652 4 года назад
Большое спасибо. Зашёл узнать буквально один момент в анимации, а узнал столько нового! Спасибо!!!
@Alex-hs8xj
@Alex-hs8xj 4 года назад
очень крутая подача, спасибо!
@BasonIndieDev
@BasonIndieDev Год назад
Какие простые и в то же время куртые вещи ты рассказываешь! ты крут парень!
@MaxuhaNax
@MaxuhaNax 5 лет назад
Ох круто, для меня, как для новичка информация очень легкая и позновательная, спасибо!
@NickBardier
@NickBardier 4 года назад
Спасибо большое за видео, все четко и понятно, притом что я только начал изучать unity.
@Skyman759626
@Skyman759626 4 года назад
Ты просто шикарен
@ai-arts-manet
@ai-arts-manet 4 года назад
Присоединюсь к комментаторам - ваш канал один из лучших по Unity. Если будет минутка расскажите пожалуйста как можно преодолеть одну неприятную особенность анимации - если параллельно с ней идет корутина с загрузкой данных из сети (UnityWebRequest), то анимация фризится (как бы подлагивает). Можно ли как-то сделать её плавной?
@Kee1L
@Kee1L 5 лет назад
Круто
@user-hl2kl3rq3q
@user-hl2kl3rq3q 3 года назад
классный канал!!
@Aeralise
@Aeralise 3 года назад
Про движение через корутину, пожалуй, добавлю, что, наверное, в yield return вместо null лучше использовать new WaitForFixedUpdate(), ибо по себе понял, что при null, во-первых, скорость движения завязана на фпс, а во-вторых, если в игре можно ставить паузу (Time.timeScale = 0), то такой объект продолжит двигаться, когда как всё остальное замирает
@Kawabatushka
@Kawabatushka Год назад
Вот это да! Не представляю, как бы я этот баг исправил в своём проекте
@djiexn
@djiexn 2 года назад
спасибо Позаимствовал moveTowards способ
@evagangart5035
@evagangart5035 4 года назад
Вау)
@user-tw9oz4ee9v
@user-tw9oz4ee9v 3 года назад
На самом деле написать мне кроме спасибо нечего, но чтоб ютюб видел, что тут классно напишу коммент.)
@boristyulkin8951
@boristyulkin8951 5 лет назад
Спасибо за еще одно полезное видео) А как ты запустил игру для проверки с разным количеством фпс?
@EmeraldPowder
@EmeraldPowder 5 лет назад
QualitySettings.vSyncCount = 0; Application.targetFrameRate = fps; Не то чтобы научно точный метод измерения, но и у реальных игроков будет не ровно 5 фпс всегда а он будет скакать, если тормозит
@boristyulkin8951
@boristyulkin8951 5 лет назад
@@EmeraldPowder спасибо, надеюсь я не сильно достаю вопросами под каждым вторым видео)
@EmeraldPowder
@EmeraldPowder 5 лет назад
Да нет конечно, наоборот говорят комменты под видео поднимают их в глазах алгоритмов ютуба)
@aloYoba
@aloYoba 2 года назад
Огромное спасибо за видео! Вы могли бы подсказать, какие из перечисленных методов (кроме доп. плагина), являются наиболее ресурсоемкми, тяжелыми для игры? И какие наиболее легкими. Или они +/- равны, и разницы в производительности не будет?
@PS-vj6jz
@PS-vj6jz 5 лет назад
Тебе нужно сделать видос для самых зелёных джунов в плане VFX. Чтобы объяснить, в чем основы работы с частицами, что нужно применить/наложить, какие параметры и тд. Готов подождать:)
@EmeraldPowder
@EmeraldPowder 5 лет назад
Эффекты и частицы я люблю, но помню когда с VFX Graph ещё игрался очень уж долго пытался что-нибудь достаточно красивое сделать, чтобы было достойно видео) Но если придумаю классный эффект то возможно сделаю
@PS-vj6jz
@PS-vj6jz 5 лет назад
Тебе нужно сделать видео уроки. Если есть желание. На самые основы. Из чего состоит анимация этих частиц, что лежит в их основе (3д объекты, если я правильно понимаю) стандартные инструменты (ноды), которыми чаще всего пользуются. Например, мы сегодня будем делать то-то, чтобы это сделать нужен такой объект, и такие ноды, каждая года отвечает за то-то. Объяснить какие у них параметры и за что отвечают. Какие нибудь стандартные фишки, эффекты. Грубо говоря с самых начал. Просто ты объясняешь для понимающих, я примерно понимаю ход мыслей, но если придумать мне задачу, я ее не сделаю.
@EmeraldPowder
@EmeraldPowder 5 лет назад
@@PS-vj6jz Да, у меня не начального уровня уроки. в основном. А ноды ты имеешь ввиду эти модули которые в стандартной системе частиц, или те которые надо линиями соединять, в VFX Graph?
@PS-vj6jz
@PS-vj6jz 5 лет назад
@@EmeraldPowder я с системой частиц вообще не знаком. Имел ввиду граф, думал, что это следующая стадия развития частиц в Юнити. Вот и встаёт вопрос, делать тебе их или как. Видосы для обучения.
@EmeraldPowder
@EmeraldPowder 5 лет назад
@@PS-vj6jz Да, граф вроде как новый, но он ещё не до конца готов, да и у него есть некоторые ограничения. Так что обычная система частиц более практически применима
@yevhen-studio
@yevhen-studio 4 года назад
можно проанимировать в какой-то внешней тулзе типа Spine, Dragonbones и импротнуть в проект, для 3д в редакторах типа blender, maya, 3dsmax можно не только в корутинах а в асинхронных методах async/await они лучше чем корутины DOTween заслуживает большего внимания так как считаю это один из лучших способов на самом деле анимации можно проанимировать в шейдере + шейдер граф уже есть новый
@user-oy9cy1cq1m
@user-oy9cy1cq1m Год назад
Вродь можно ещё InvokeRepeating'ом анимацию накодить, если божьей кары не боишься 🙃
@renatmukhametshin7586
@renatmukhametshin7586 3 года назад
Спасибо, очень информативно. У меня возникла проблема, если данные скрипты использовать по отношению к элементам UI, то они почему-то моментально телепортируются к месту назначения, как это исправить?
@psi4042
@psi4042 2 года назад
Ничего не понял, но очень интересно
@assasinvm
@assasinvm 3 года назад
А как сделать покадровые анимации для 3D объектов (для voxel воды )?
@ulbossyn23
@ulbossyn23 3 года назад
Добрый вечер! А как создать игру если Windows (32-bite)? И можно создать на Unity тренажер для учеников по сборке ПК?
@bogotoff
@bogotoff 5 лет назад
Первый способ Lerp может работать нормально независимо от FPS. Попробуй сделать так: pos = Vector3.Lerp(pos, targetPos, 1 - Mathf.Exp(Mathf.Log(1 - R / 60) * 60 * Time.deltaTime)); R влияет на кривизну графика функции, нужно подбирать методом тыка. Например подставь R=1.2 чтобы было похоже на обычный лерп.
@EmeraldPowder
@EmeraldPowder 5 лет назад
Да, какая-то формула точно существует с которой всё будет правильно работать. Но всё равно понятнее код будет если сохранить начальное положение и через него сделать
@bogotoff
@bogotoff 5 лет назад
@@EmeraldPowder Согласен, но если например хочется сделать камеру, которая плавно следует за персонажем, то лучше через эту формулу
@yevhen-studio
@yevhen-studio 4 года назад
используй DOTween и не городи костыли
@whatka4242
@whatka4242 4 года назад
Читал что анимировать через изменение position - это не лучший вариант (херит производительность). И предпочтительней использовать addForce.
@KJPiGames
@KJPiGames 4 года назад
Можно спросить если использовать аниматор в качестве корня для анимаций вес приложения под андроид будет больше или это не влияет?
@EmeraldPowder
@EmeraldPowder 4 года назад
Анимации не очень много места занимают обычно, если там не сотни объектов и ключевых кадрах, вроде скелетов всяких. Но для таких сложных случаев особо альтернатив аниматору все равно нет
@user-hw5fc5hz3e
@user-hw5fc5hz3e 3 года назад
0:19 как так же делать уровни?
@Kitsikoo
@Kitsikoo 2 года назад
А почему есть зависимость от фпс, если уже используется Time.deltaTime?
@mn4840
@mn4840 2 года назад
пример с поворотом и перемещением одновременно был бы полезнее.
@NewUser78654
@NewUser78654 Год назад
3.15 Трансформ позишн зависит от фпс? По моему тут Update зависит от фпс и мы без проблем можем написать Трансформ в FixedUpdate. И тогда на любых фпс объект пройдет равное расстояние. Насколько я понимаю, в Update вообще нельзя писать код расчета т.к. априори этот метод зависит от частоты экрана. Только для отображения, Где передвижение объекта с помощью вектора? Трансформ это же мгновенное перемещение, без приложения силы и прочего - итого та-же машина будет без физики, без движения по инерции и т.д. Не используется физический движок.
@user-rp8ye8bg7k
@user-rp8ye8bg7k 4 года назад
Наканецта я тебя нашол
@unitynavigator3328
@unitynavigator3328 5 лет назад
Есть знания про cel shaded? Чтобы имитировать графику как в серии borderlands.
@EmeraldPowder
@EmeraldPowder 5 лет назад
Видел пару примеров такого шейдера где-то, но сам не делал. Вообще шейдеры без шейдер-графа это тема интересная, и эффекты можно получить очень крутые, но там математики полно, и я сам не так много их писал. Как раз пытался недавно воссоздать что-то похожее на стиль The Legend of Zelda, но ничего внятного так и не получилось
@unitynavigator3328
@unitynavigator3328 5 лет назад
@@EmeraldPowder в любом случае жду видосов. (и все еще надеюсь на 2D динамические тени - от врагов, колон и т.д.)))
@xephosbot
@xephosbot 4 года назад
А можно ли при помощи системы частиц реализовать такую анимацию, когда в 2д игре подбираешь монетку и монетка как бы летит к определенной точке UI
@EmeraldPowder
@EmeraldPowder 4 года назад
Тут наверное система частиц не очень подойдёт, лучше просто сразу удалять монетку из мира, спаунить в той же точке экрана на UI, и скриптом двигать к нужной точке
@xephosbot
@xephosbot 4 года назад
@@EmeraldPowder я думал о таком варианте, но мне казалось что это будет костыль и есть способ проще) Просто во многих играх такое реализовано и там монета может не одна быть. Допустим открываешь сундук с монетами и небольшая куча монет летит в сторону счётчика. Не спавнить же думаю 20 монеток.
@polus818
@polus818 4 года назад
Где ты взял пункт Animation я МАКСИМУМ могу добавить animatoR то что мне не надо?
@discothunder3820
@discothunder3820 4 года назад
Сверху нажми на windows и там найдешь если ещё актуально
@goto1212
@goto1212 5 лет назад
а где можно узнать подробнее о системе частиц?
@EmeraldPowder
@EmeraldPowder 5 лет назад
Я обычно смотрю всяких ютуберов которые создают всякие прямо очень классные эффекты, смотрю что они тыкают. Там с этими частицами вроде бы всё просто, задаёшь просто скорость, форму, размер.. но вот всё это скомпоновать в красивый эффект это вот искусство. Вот к примеру кто-то на кого подписан: ru-vid.comvideos
@goto1212
@goto1212 5 лет назад
@@EmeraldPowder Спасибо
@boristyulkin8951
@boristyulkin8951 5 лет назад
Есть еще например русский канал, ErbGameArt, тоже крутые штуки делает
@geedroponika
@geedroponika 5 лет назад
здесь можно perevodvsem.ru/threads/pluralsight-unity-particle-system-fundamentals-eng-rus.6348/
@clayman4549
@clayman4549 4 года назад
Чтобы избежать геморроя с deltatime почему не показали метод FixedUpdate? Там фпс фиксированный в lerp можно обычный float засунуть и контролировать позицию
@EmeraldPowder
@EmeraldPowder 4 года назад
Да, FixedUpdate можно использовать, тоже хороший вариант. Там в идеале тоже нужно домножать на Time.fixedDeltaTime, но он никогда не меняется, так что можно и просто константы пихать, и lerp будет одинаково всегда работать.
@yevhen-studio
@yevhen-studio 4 года назад
так себе идея по большей части FixedUpdate для модельных апдейтов(как физика например), я для визуала как анимации то нужно использовать обычный апдейт FixedUpdate - может быть вызван несколько раз за кадр а может быть вообще не вызван. это вообще не нужно для анимации
@mrgoodpeople
@mrgoodpeople 4 месяца назад
Как бороться с тем, что если на объекте есть камера и компонент Rigidbody, но нужно делать ещё и вручную смещение через изменение transform.position, то не работает нормально режим интерполяции Interpolate. Всё дергается. Помогает смена режима на Extrapolate, но он не такой плавный, на глаз видны подёргивания. Знаю, что не рекомендуется вручную менять position, но вот прямо очень нужно! Думал функция MoveTowards поможет, но нет. Пытался даже через физику как-то хитро сделать, типо разовый AddForce, а потом ещё раз AddForce, но с противоположенным значение силы. Ничего не выходит...
@user-by7bn2du5j
@user-by7bn2du5j 4 месяца назад
Движение камеры отдельным скриптом прописано? Может попробовать тогда её движение прописать в LateUpdate? А вообще в целом не очень понятна история со смещением.. Может подойдёт какой-то кратковременное прямое изменение rigidbody.velocity? Без общего понимания ситуации сложно подсказать конечно
@mrgoodpeople
@mrgoodpeople 4 месяца назад
@@user-by7bn2du5j Спасибо за ответ! Камера жёстко прикреплена к объекту, на котором висит Rigidbody и движется вместе с ним. Если подробнее, то речь о авиасимуляторе. Весь основной код движения находится в FixedUpdate и сделан через применение сил. Однако (так уж сложилось) ветер был сделан через ручное смещение. То есть каждый кадр в самом конце FixedUpdate дополнительно делается position +=.
@mrgoodpeople
@mrgoodpeople 4 месяца назад
@@user-by7bn2du5j то есть компонент камеры висит на том же объекте, где и компонент Rigidbody, а не является отдельным объект, поэтому скрипта для её перемещения нет, только иногда для смены вида и вращения (если нужно).
@user-by7bn2du5j
@user-by7bn2du5j 4 месяца назад
@@mrgoodpeople ох, даже не знаю что посоветовать.. У самого опыта маловато) но по ощущениям вот такое вмешательство в позицию будет дёргать кадр всё равно. Может для ветра ввести коэффициент, который будет влиять на применяемую силу? Вроде как и звучит логично, и будет только физические взаимодействия
@mrgoodpeople
@mrgoodpeople 4 месяца назад
@@user-by7bn2du5j да, с ветром вообще тяжело выходит =). я почему его и сделал так через перемещение, что это было проще. А теперь уже менять сложно. Дело в том, что ветер должен давать конкретный сдвиг для движения самолёта, а не абы какой. Проще всего было контролировать это вручную. И если я попытаюсь делать это через силы (или меняя свойство velocity), то перестаёт корректно работать весь остальной код, ведь там изменится боковой угол сноса. Я конечно думал изначально сделать ветер через силы, но запутался немного как это правильно сделать =). И решил пойти коротким путём, который теперь мешает всё поменять, слишком уж много на этот position+= завязано стало. Боюсь поломать...
@SekundaPrikola
@SekundaPrikola Год назад
Для топ даун гонок есть 3 способа 1) .AddForce (добавление силы для физики) 2) transform.Translate (перемещение через трансформацию) 3) velocity (меняет силу объекта)
@user-nw8qc6rq7n
@user-nw8qc6rq7n Год назад
Какой же ты умный
@mrkickasser1566
@mrkickasser1566 4 года назад
Это что за ведро должно быть чтобы 2д игра лагала?) Самсунг Гэлакси Эс 20 на Эксиносе что ли?))
@EmeraldPowder
@EmeraldPowder 4 года назад
Это не от ведра зависит, а от игры) И от того что там в ней есть, и от того как она написана. Та же фактория какая-нибудь, или Террария, там есть чему тормозить. На мобилках вот не припомню ничего с такой сложной логикой чтобы тормозило прямо из-за неё, но думаю что-то тоже есть
@Giblotus
@Giblotus 11 месяцев назад
Замени приписку Tutorial на обзор, и не вводи в заблуждение. В видео показаны возможности, а не руководство как пользоваться. Фраза с стиле "тут надо нажать пару кнопочек" - это не туториал.
Далее
🔊 Всё про звук в Unity3D [Tutorial]
21:31
Сколько метров чернил в ручке?
16:35
Всё про корутины в Unity 3D
13:18
Просмотров 99 тыс.
🎲 Как работает Random в играх
8:45
Настраиваем Animator в Unity
13:50
Просмотров 10 тыс.
Переключение анимаций в Unity
9:23
Сколько метров чернил в ручке?
16:35