Quick answer: Elastic overshoots by design. For milder feel use Ease Out Back; for none use Ease Out Cubic. Or clamp final value to target on tween complete.

A button uses Ease Out Elastic to scale on press. Players report the button briefly looks 1.5× size before settling. That’s elastic in action — oscillating around the final value.

Easing Family Comparison

EasingOvershootUse Case
LinearNoneMechanical motion
Ease Out CubicNoneNatural deceleration
Ease Out Back~10%Subtle bounce
Ease Out Elastic~30% + oscillationSpringy, playful
Ease Out BounceMulti-bounceBall drop

Pick by feel and overshoot tolerance.

Clamp at End

If you must use elastic but need the final value exact:

Tween OnFinished:
    Object → Set position to target_x, target_y

Tween’s last value may be a tiny epsilon away from target. Explicit set ensures exact.

Custom Amplitude

Construct 3’s Tween Behavior has a Custom Easing mode — provide your own ease function via JS:

// elastic with adjustable amplitude
function easeElastic(t, amp) {
    return Math.sin(-13 * Math.PI / 2 * (t + 1)) * Math.pow(2, -10 * t) * amp + 1;
}

Reduce amp to 0.5 for milder overshoot. Or supply via expression.

Verifying

Animate button. Bounce visible but feels intentional. Final state is exact target. Side-by-side with other easings to choose what fits the game’s tone.

“Elastic overshoots by definition. If you want precision and bounce, clamp at end or pick Back.”

For mobile UI, lean toward Ease Out Cubic or Quad — players touch and expect snappy feedback, not playful animation.