Easing functions в Unity & DoTween
-
Функции анимации для Unity
FrameWork для UNity3d: https://dotween.demigiant.com/
Документация: https://dotween.demigiant.com/documentation.phpПринцип:
- Узнаем, что анимировать. Например, подсветку.
- Узнаем, как анимировать. Например, идем https://easings.net/ смотрим график и тип анимации. Например, мне нужна анимация easeOutSine. По ней должна меняться частота цвета подсветки
- Далее ищем какой-нибудь пример в поисковике по работе с цветом. Пусть это будет
using DG.Tweening; using UnityEngine; public class ColorChanger : MonoBehaviour { [SerializeField] private MeshRenderer meshRenderer; private void Awake() { // меняется цвет материала DOVirtual.Color(Color.black, Color.white, 10, (value) => { meshRenderer.material.color = value; }); } }
Смотрим документацию
...В этом примере, material при каждом разе пересоздается с новым цветом в каждом кадре отрисовки, поэтому надо менять на sharedMaterial. Этот пример надо переделать с анимацией
-
Ищем функцию анимации
-
Пишем пример. Анимируем мерцание цвета с возрастающей частотой по InQuint
IEnumerator ShowWriteButton() { Image image = writeButton.GetComponent<Image>(); Color originalColor = image.color; float frequency = 0; DOVirtual.Float(0.01f, 0.1f, 1f, v => frequency = v).SetEase(Ease.InQuint); var currentTime = Time.time; yield return new WaitForSeconds(0.5f); while (Time.time - currentTime <= 1f) { image.color = originalColor; yield return new WaitForSeconds(frequency); image.color = colorWrite; yield return new WaitForSeconds(frequency); } } StartCoroutine(ShowWriteButton());
В этом примере происходят параллельно две операции: изменение частоты по InQuint и использование этой частоты для подсветки кнопки. Много примеров в документации...
Dotween библиотека популярна. Её можно использовать для полета камеры, для перемещения объектов, подсветки и т.п.