Другой linear.

Другой linear.

Делая очередную оптимизацию, что бы в последствии превратить её в скрипт, я уперся в одно ограничение linear — жесткие рамки. Да, в 99% случаях linear достаточно, но порой хочется «раздвинуть границы», и тут мне подсказали другое выражение

an — слайдер с анимацией от 0 до 100, причем интерполяцию ключей я могу сделать любой, хоть overshoot, т.е. выходяшей за рамки.

pIn — контроллер, которым задаю значение смещения.. т.к. я применил это к position — то и использовал 3D point control.

value+pIn*(100-an)/100 — вот тут самое интересное. pIn*(100-an)/100 — это уменьшающееся(или увеличивающееся (в зависимости от an)) значение со слайдера pIn. проще говоря это тот же linear, только зажатый в другие границы, в границу зависимости от 0 до 100. но зато к этому слайдеру модно подключить и другие параметры. На примере это выглядит так:

В первую очередь я сделал слайдер для анимации, и заанимировал его от 0 до 100, как будто это в процентах. И выставил интерполяцию ключей с выходом за границы 100% (overshoot). Как если бы я использовал скрипт ease and wizz. Потом я добавил еще один слайдер для смещения.

Все значения и интерполяции выставил одинаковыми.

На зеленом квадратике я прописал linear

и как только он доходит до значения 100, все изменения прекращаются. Мы уперлись «в потолок», но ведь анимация то еще продолжается.

а в красном квадратике я прописал

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

(100-an)/100 — это получается число от 0 до 1. Соответственно если умножить любое число на 1 — получим тоже самое число, а если умножаем на 0.9 (например) — получим меньшее число. Таким образом мы создаем тот же linear, но теперь он не привязан к жестким границам. Хотя ограничения все же есть и это другой слайдер с ключами от 0 до 100. Зато можно спокойно изменять позицию и вся анимация не слетит.