Easing
Choose how an animation accelerates, settles, or overshoots
Overview
Easing changes the pace of an animation without changing its duration. A panel can settle gently into place, a button can spring past its target, or a value can move at a constant rate.
Set Ease on a clip or use .WithEase(Ease.OutCubic) in code. Serialized clips default to OutCubic; EvoTween.Create uses Linear unless you choose another ease.
Built-in Curves
In starts slowly, Out settles toward the end, and InOut eases at both ends.
| Family | Character |
|---|---|
| Linear | Constant interpolation rate. Useful when an even change matters. |
| Sine | Gentle acceleration and deceleration. |
| Quad, Cubic, Quart, Quint | Progressively stronger ease shapes. OutCubic is a useful starting point for UI transitions. |
| Expo | A strong change in pace with a pronounced start or finish. |
| Circ | A more abrupt transition between slow and fast movement. |
| Back | Moves beyond an endpoint before settling. |
| Elastic | Oscillates around an endpoint with a spring-like feel. |
| Bounce | Repeated bounces as the animation reaches an endpoint. |
All families except Linear have In, Out, and InOut variants, such as Ease.InSine, Ease.OutBack, and Ease.InOutQuint.
Back and Elastic can produce values outside the start-to-target range. Modules with bounded values, such as alpha or normalized fill, clamp their results, so overshoot may be less visible there than on position or scale.
Custom Curves
Select Custom to edit an AnimationCurve. The horizontal axis is normalized time; the vertical axis is interpolation progress. A curve from (0, 0) to (1, 1) starts at From and ends at Target.
AnimationCurve curve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f);
TweenHandle handle = EvoTween.Create(Vector3.one * 0.8f, Vector3.one, 0.3f)
.WithEase(Ease.Custom, curve)
.BindToScale(transform);Reuse custom curves if you're starting the same animation frequently. Creating a new curve for every trigger adds setup allocations.
The Timeline Window requires a curve that starts at 0 and ends at 1 when recording edits into an existing clip.
Evaluate an Ease Yourself
TweenEase.Evaluate(Ease ease, float time, AnimationCurve customCurve = null) returns the eased value for normalized time. Input time is clamped to 0–1; the output can overshoot for curves that support it.
Use this when you need the same easing in your own interpolation code without scheduling a tween.