Перейти к основному содержимому

Анимация

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

СпособЛучше всего дляНастраивается в
Перехододного плавного изменения отсюда тудадлительности у шага или состояния
Шаг анимациипереиспользуемого движения, привязанного к событиюшаге внутри события
Таймлайнпостановки — несколько объектов, несколько дорожек, одни часыAnimation Controller
Клип моделианимации, приехавшей с импортированной модельюнастройках самой модели

Грубое правило: затухание кнопки — переход, дверь, открывающаяся по нажатию — шаг анимации, катсцена — таймлайн, а идущий персонаж — клип модели.

Один объект — один механизм

Никогда не анимируйте один объект двумя способами сразу. Таймлайн пишет в свои объекты каждый кадр и тихо перезапишет переход. Если анимация будто дерётся сама с собой — вот почему.

Переходы

Задайте изменению длительность — и оно поедет плавно, а не прыгнет. Это относится и к переключению состояния с длительностью, и к шагу события с ней.

У перехода есть длительность, easing и, опционально, число повторов и ping-pong. Что именно едет плавно, перечислено в что анимируется плавно; всё остальное меняется в конце.

Число повторов, равное 1, — это один проход

Ping-pong начинается с 2. Это не даёт старым проектам внезапно запульсировать.

Шаги анимации

Шаг анимации двигает, вращает, масштабирует или растворяет то, на что вы его нацелили.

Дайте ему одну точку назначения — он плавно приедет туда. Дайте два и больше кейфрейма — он проиграет всю кривую.

ШагЧто анимирует
Трансформацияпозицию, поворот, масштаб
Прозрачностьпоявление и растворение
Трансформация костиодну кость
Материалкопирует вид сохранённого материала на ваши цели
Проиграть / остановить анимациюзапускает или останавливает пресет таймлайна

Кейфреймы и easing

Кейфрейм — это момент времени и значение.

Easing принадлежит тому кейфрейму, в который вы приезжаете

А не тому, из которого уезжаете. Задавайте easing на кейфрейме назначения. Отсутствие easing означает прямую линию.

Easing — это кривая с двумя ручками, ровно как CSS cubic-bezier. Именованные пресеты — quad, quart, circular, expo, back, каждый в вариантах In, Out и InOut — это просто удобные положения ручек.

EasingКак ощущается
Inначинает медленно, набирает скорость — что-то трогается с места
Outприезжает и успокаивается — самое естественное для интерфейса
InOutплавно с обоих концов — хорошо для длинных перемещений
Backслегка перелетает и возвращается — игриво
Elasticперелетает и колеблется, со своими амплитудой и периодом
Stepдержит, а в конце щёлкает — для переключения, а не скольжения

Если сомневаетесь, Out почти всегда верное первое предположение.

Таймлайн

Animation Controller — для постановки, когда несколько вещей движутся вместе по одним часам.

Его структура трёхуровневая:

  • пресет — одна анимация, которую можно запустить по имени;
  • дорожка (bar) — партия одного объекта в ней, лежащая на треке;
  • внутри дорожки у каждого свойства свои кейфреймы.

Дорожка может быть и воспроизводящей: вместо того чтобы что-то анимировать самой, она запускает пресет другого объекта, когда до неё доходит указатель. Так персонаж, у которого конечности — отдельные пресеты, остаётся синхронным. Зацикливание и скорость передаются всему, что она запускает, а остановка пресета останавливает всё, что он запустил.

Отдельные свойства внутри дорожки можно приглушить, так что дорожка, анимирующая позицию и поворот, может отключить поворот, не теряя кейфреймы.

Импортированные клипы сохраняют исходные кривые

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

Клипы модели

Модель приносит собственные именованные клипы. Выберите один, затем задайте скорость, повтор (один раз, заданное число или бесконечно) и стартовый кадр — считается по 30 кадров в секунду, какой бы ни была частота в исходнике.

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

Единицы измерения и одна отсутствующая вещь

  • время в секундах (длительности при переключении состояний — в миллисекундах);
  • поворот в градусах везде, где вы его видите;
  • стартовые кадры считаются при 30 fps.
События «анимация закончилась» не существует

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


Дальше: Состояния — именованные снимки объекта.