Страница 1 из 1

Плавное изменение переменной из coroutine вызванной единожды

СообщениеДобавлено: 14 апр 2021, 07:45
Andruxa2033
Подскажите как однократно вызывая Coroutine можно добиться плавного изменения значения переменной?
Мой код:
Синтаксис:
Используется csharp
private void OnEnable()
    {
        StartCoroutine(Disappear(disableTime));
    }
IEnumerator Disappear(float t)
    {
        yield return new WaitForSeconds(t);
        delta = minLight;
        while(delta < maxLight)
        {
            variable = Mathf.Lerp(minLight, maxLight, inOutTime);
            delta += Time.deltaTime;
            light2D.pointLightOuterRadius = variable;
        }
        gameObject.SetActive(false);
    }
 

Значение меняется моментально, а предполагается постепенное изменение радиуса света 2D
Подскажите кто разбирается плз

Re: Плавное изменение переменной из coroutine вызванной единожды

СообщениеДобавлено: 14 апр 2021, 08:21
Xtir
Ну так добавь ожидание в цикл

Re: Плавное изменение переменной из coroutine вызванной единожды

СообщениеДобавлено: 14 апр 2021, 08:54
Andruxa2033
Xtir писал(а):Ну так добавь ожидание в цикл

ожидание в смысле 0.01 секунды?

Re: Плавное изменение переменной из coroutine вызванной единожды

СообщениеДобавлено: 14 апр 2021, 09:01
Andruxa2033
Xtir писал(а):Ну так добавь ожидание в цикл

Спасибо, работает отлично

Re: Плавное изменение переменной из coroutine вызванной единожды

СообщениеДобавлено: 14 апр 2021, 09:21
Saltant
Обычно тайм дельтатайн умножают на скорость и пропускают 1 кадр с помощью yield return null.