Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Collapse
Brand Logo

CELua[RU]

  1. Главная
  2. Программирование
  3. Unity3D
  4. Easing functions в Unity & DoTween

Easing functions в Unity & DoTween

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

    Функции анимации для 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

Powered by NodeBB | Contributors
СeLua[RU] 2024©
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы