@youkerni
Unity3D developer

Как добавить функции плавности к линейному движению?

Всем добрый вечер! Пишу свой твинер (аналог DOTween) для того что бы лучше разобраться с внутренним функционалом и понимать как он работает.

В DOTween для каждого твина была возможность применить функцию плавности - EASE. Я не до конца понимаю что их с математической точки зрения, отсюда не до конца понимаю как реализовать это в собственном продукте. Может вы подскажете пару статей, которые объясняют это доступным языком?
  • Вопрос задан
  • 474 просмотра
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos Куратор тега Unity
Какой то интересный перевод - функция плавности... Хотя вроде и правильный.
По сути своей это просто закон изменения значения в зависимости от времени.
Вот разные варианты: https://easings.net/ru
Можно представить графиком - благо в юнити есть кривые, можно - сразу функцией - быстрее считать будет.

Например, простой линейный закон:
x = k*t. t - время с начала анимации, k - коэффициент - по сути скорость.
Квадратичный закон:
x = k*(t^2) - за одно и то же время будет проходится все большее и большее расстояние.
Ну и т.д.
Ответ написан
Комментировать
@GreatRash
Вот тут теория (ActionScript).
Вот тут реализация (JavaScript).
Ответ написан
Комментировать
@Karpion
Можно аппроксимировать функцию линейными кусками - тогда на переходах будут углы. А можно использовать сплайны - квадратные, кубические и далее; тогда результат будет более плавным.

Если система развивается во времени - то иногда просто добавляют инерцию. Без инерции - скорость пропорциональна силе, и при резком изменении силы резко меняется и скорость. А с массой точки - приходится учитывать ускорение, там диф.уравнение второго порядка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы