CELua[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Easing functions в Unity & DoTween

    Запланировано Прикреплена Закрыта Перенесена Unity3D
    1 Сообщения 1 Posters 177 Просмотры 1 Watching
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • MasterGHM Не в сети
      MasterGH Администраторы
      отредактировано

      Функции анимации для Unity

      interpolate.gif

      FrameWork для UNity3d: https://dotween.demigiant.com/
      Документация: https://dotween.demigiant.com/documentation.php

      Принцип:

      1. Узнаем, что анимировать. Например, подсветку.
      2. Узнаем, как анимировать. Например, идем https://easings.net/ смотрим график и тип анимации. Например, мне нужна анимация easeOutSine. По ней должна меняться частота цвета подсветки
      3. Далее ищем какой-нибудь пример в поисковике по работе с цветом. Пусть это будет
      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;
              });
          }
      }
      

      Смотрим документацию
      e22e8aa5-b901-4392-a75b-55bd9819279f-image.png

      ...В этом примере, material при каждом разе пересоздается с новым цветом в каждом кадре отрисовки, поэтому надо менять на sharedMaterial. Этот пример надо переделать с анимацией

      1. Ищем функцию анимации
        0bbce586-0935-4d95-8024-c9f27de92d0f-image.png

      2. Пишем пример. Анимируем мерцание цвета с возрастающей частотой по 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 библиотека популярна. Её можно использовать для полета камеры, для перемещения объектов, подсветки и т.п.

      1 ответ Последний ответ Ответить Цитировать 0

      • 1 / 1
      • Первое сообщение
        Последнее сообщение
      Powered by NodeBB | Contributors
      СeLua[RU] 2025©