Лерп в Coroutine не работает - PullRequest
1 голос
/ 10 мая 2019

Я использую сопрограмму ниже, чтобы попытаться масштабировать преобразование из Vector3.zero в Vector3.one в течение одной секунды (scalingTime). Я определил, что сопрограмма определенно запускается, но объект не масштабируется. Правильно ли я использую «yield return null» в цикле while?

IEnumerator ScaleLaser()
{
    float elapsedTime = 0;
    float scalingTime = 1;
    Vector3 currentScale = laser.localScale;

    while (elapsedTime < scalingTime)
    {
        transform.localScale = Vector3.Lerp(currentScale, Vector3.one, elapsedTime / scalingTime);
        elapsedTime += Time.deltaTime;
        yield return null;
    }
}

1 Ответ

2 голосов
/ 10 мая 2019

Это должно работать.

IEnumerator ScaleLaser()
{
    float scalingTime = 1;
    float time = 0;

    while (time < 1)
    {
        time += Time.deltaTime / scalingTime;
        laser.localScale = Vector3.Lerp(laser.localScale, Vector3.one, time);
        yield return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...