Бесконечный цикл в корутине, но с имеющимся выходом

В общем проблема для меня совсем непонятна, я запускаю корутину один раз и кручу камеру в цикле, как раз в ней, но при достижении практически минимального порога выхода из цикла, значение немного уменьшается(?). Я не знаю что делать, даже ии сочла это странным и не смогла помочь. Вот код:

private void Die()
{
    _playerDie = true;
    StartCoroutine(DieAnimation());
    Debug.Log("Движение игрока остановлено");
}

private IEnumerator DieAnimation()
{
    Quaternion camup = Quaternion.Euler(-90, _playerCamera.transform.localRotation.y, _playerCamera.transform.localRotation.z);
    Quaternion cam = _playerCamera.transform.localRotation;
    float timeElapsed = 0f;
    for (; timeElapsed < _durationDie;)
    {
        timeElapsed += Time.deltaTime;
        float progress = timeElapsed / _durationDie;
        progress = Mathf.Clamp01(progress);
        _playerCamera.transform.localRotation = Quaternion.Lerp(cam, camup, progress);
        Debug.Log($"Time: {timeElapsed}, Progress: {progress}");
        Debug.Log($"Delta: {Time.deltaTime}, FixedDelta: {Time.fixedDeltaTime}, TimeScale: {Time.timeScale}");
        yield return null;
    }
    _playerCamera.transform.localRotation = Quaternion.Lerp(cam, camup, 1);
}

Я сначала использовал цикл while и в нём условие, потом через условие true, но внутри него условие и break, через for как в примере выше, потом значения приближенные к результату, но всё приводит к одному и тому же.


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