Плавное изменение размера объекта unity

139
18 апреля 2022, 00:10

помогите сделать плавное увеличение и уменьшение размеров кнопки программно. Я написал код, но он почему-то изменяется слишком быстро.

if (goUp)
        {
            VideoBtn.transform.localScale = Vector3.Lerp(VideoBtn.transform.localScale, endLocale,1f);
            if (VideoBtn.transform.localScale == endLocale)
                goUp = false;
        }
        if (!goUp)
        {
            VideoBtn.transform.localScale = Vector3.Lerp(VideoBtn.transform.localScale, startLocale,1f);
            if (VideoBtn.transform.localScale == startLocale)
                goUp = true;
        }
Answer 1
public class ResizeObject : MonoBehaviour {
    private Transform _transform;
    private IEnumerator _resizeCoroutine;
    private void Start () {
        _transform = transform; // кешируем трансформ
        Resize(2f, 5);
    }
    public void Resize (float time, float size) {
        Resize(time, new Vector2(size, size, size));
    }
    public void Resize (float time, Vector3 size) {
        // останавливаем ресайз если он происходит
        if (_resizeCoroutine != null)
            StopCoroutine(_resizeCoroutine);
        // запускаем корутину ресайза
        _resizeCoroutine = ResizeCoroutine(time, size);
        StartCoroutine(_resizeCoroutine);
    }
    private IEnumerator ResizeCoroutine (float time, Vector3 target) {
        float Timer = 0;
        Vector3 Base = _transform.localScale;
        while (Timer < time) {
            _transform.localScale = Vector3.Lerp(Base, target, Timer/time);
            yield return null; // задержка цикла до следующего кадра
            Timer += Time.deltaTime;
        }
        _transform.localScale = target;
        _resizeCoroutine = null;
    }
}

Для не линейной интерполяции по кривой используется AnimationCurve

[SerializeField] private AnimationCurve _curve; // поле класса, настраивается в инспекторе
...
_transform.localScale = Vector3.Lerp(Base, target, _curve.Evaluate(Timer/time);
READ ALSO
Quartz.NET не работает вместе с Entity framework

Quartz.NET не работает вместе с Entity framework

Если в классе OrderTime создам конструктор c базой, то метод Execute перестает работатьКто знает как решить эту проблему? Может можно реализовать...

142
Чтение и замена в файле XML на C# [дубликат]

Чтение и замена в файле XML на C# [дубликат]

Понимаю вопрос от слова совсем нетПомогите

106
c# Телеграмм Бот

c# Телеграмм Бот

Доброе время суток, Хотел создать Бота для телеграмма, но подключение к боту не происходитВот сообственно код

122
Visual Studio выдает ошибку

Visual Studio выдает ошибку

Visual Studio выдает ошибку Exception: SystemException: и пишет что ошибка в 1 строке, а на первой строке у меня using System

131