diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index b32b04655d2d..bf0189840232 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -546,8 +546,9 @@ void PropertyTweener::start() { return; } - if (do_continue) { + if (do_continue && Math::is_zero_approx(delay)) { initial_val = target_instance->get_indexed(property); + do_continue = false; } if (relative) { @@ -572,6 +573,10 @@ bool PropertyTweener::step(double &r_delta) { if (elapsed_time < delay) { r_delta = 0; return true; + } else if (do_continue && !Math::is_zero_approx(delay)) { + initial_val = target_instance->get_indexed(property); + delta_val = Animation::subtract_variant(final_val, initial_val); + do_continue = false; } double time = MIN(elapsed_time - delay, duration);