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
| Easing | Overshoot | Use Case |
|---|---|---|
| Linear | None | Mechanical motion |
| Ease Out Cubic | None | Natural deceleration |
| Ease Out Back | ~10% | Subtle bounce |
| Ease Out Elastic | ~30% + oscillation | Springy, playful |
| Ease Out Bounce | Multi-bounce | Ball 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.