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

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

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;

        }

Ответы (1 шт):

Автор решения: Yaroslav
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);
→ Ссылка