Анимация
Способов заставить что-то двигаться четыре. Это по-настоящему разные инструменты, а не слои одного и того же, так что первая задача — выбрать правильный.
| Способ | Лучше всего для | Настраивается в |
|---|---|---|
| Переход | одного плавного изменения отсюда туда | длительности у шага или состояния |
| Шаг анимации | переиспользуемого движения, привязанного к событию | шаге внутри события |
| Таймлайн | постановки — несколько объектов, несколько дорожек, одни часы | Animation Controller |
| Клип модели | анимации, приехавшей с импортированной моделью | настройках самой модели |
Грубое правило: затухание кнопки — переход, дверь, открывающаяся по нажатию — шаг анимации, катсцена — таймлайн, а идущий персонаж — клип модели.
Никогда не анимируйте один объект двумя способами сразу. Таймлайн пишет в свои объекты каждый кадр и тихо перезапишет переход. Если анимация будто дерётся сама с собой — вот почему.
Переходы
Задайте изменению длительность — и оно поедет плавно, а не прыгнет. Это относится и к переключению состояния с длительностью, и к шагу события с ней.
У перехода есть длительность, easing и, опционально, число повторов и ping-pong. Что именно едет плавно, перечислено в что анимируется плавно; всё остальное меняется в конце.
Ping-pong начинается с 2. Это не даёт старым проектам внезапно запульсировать.
Шаги анимации
Шаг анимации двигает, вращает, масштабирует или растворяет то, на что вы его нацелили.
Дайте ему одну точку назначения — он плавно приедет туда. Дайте два и больше кейфрейма — он проиграет всю кривую.
| Шаг | Что анимирует |
|---|---|
| Трансформация | позицию, поворот, масштаб |
| Прозрачность | появление и растворение |
| Трансформация кости | одну кость |
| Материал | копирует вид сохранённого материала на ваши цели |
| Проиграть / остановить анимацию | запускает или останавливает пресет таймлайна |
Кейфреймы и 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.
Его не даёт ни один из четырёх механизмов. Чтобы продолжить чем-то после анимации, используйте шаг ожидания той же длительности или считайте прошедшее время в скрипте.
Дальше: Состояния — именованные снимки объекта.