Анимация — это значение во времени
Анимация выглядит сложной, пока не сказано главное. А главное умещается в одну строку: анимация — это значение, которое меняется во времени. Не эффект, не пресет, не «оживление» — значение и время.
Возьмём прямоугольник. У него есть положение по горизонтали — число: двадцать. Если в начале сцены это число равно двадцати, а через две секунды — двумстам двадцати, прямоугольник поедет вправо. Всё. Больше в этом движении ничего нет, и любая программа для анимации устроена вокруг этой мысли.
И обратное следствие, которое экономит годы: если у свойства нет числа, анимировать его нечем. Нельзя «плавно поменять шрифт» — между двумя шрифтами нет промежуточных значений. Можно поменять размер шрифта: он число.
Стоит сразу привыкнуть к этой проверке, потому что она отвечает на половину вопросов вида «а как сделать вот такое». Вопрос переформулируется в «какое здесь свойство и какое у него число» — и дальше либо число находится, и задача решается за минуту, либо не находится, и тогда задача решается совсем другим способом: не движением значения, а подменой одного слоя другим.
Второе, к чему стоит привыкнуть, — что программа хранит не движение, а два его края. Нигде внутри проекта нет записи «слой едет вправо». Есть «в нуле двадцать» и «на двух секундах двести двадцать», а всё, что видно между ними, программа считает заново каждый кадр. Это объясняет вещь, которая иначе выглядит волшебством: сдвиньте второй ключ по линейке — и движение само станет быстрее или медленнее, потому что края остались прежними, а времени между ними стало меньше или больше.