private void LateUpdate() { // Se estiver pausado, nao atualiza a animacao if (_paused) { return; } // Atualiza time decorrido var realtimeSinceStartup = Time.realtimeSinceStartup; var deltaTime = (realtimeSinceStartup - _elapsedTime) * (ConsiderTimeScale ? Time.timeScale : 1f); _elapsedTime = realtimeSinceStartup; // Atualiza delay if (!_animating) { _elapsedDelay += deltaTime; if (_elapsedDelay >= _delay) { _animating = true; if (StartCallback != null) { StartCallback(this); } } } if (_animating) { // Atualiza time da animacao _time += deltaTime / Duration; if (_time >= 1f) { Completed = true; _time = 1f; } // Chama atualizacao if (UpdateCallback != null) { var time = Ease.ConvertTime(_time); if (Inverse) { time = 1f - time; } UpdateCallback(this, time); } // Chama encerramento da animacao se necessario if (Completed) { // Chama o callback de finalizacao com sucesso (se existir) if (DoneCallback != null) { DoneCallback(this); } EndAnimation(); } } }