Godot Tween Easing: See Every Transition Type

Pick a Godot Tween transition type and ease type to plot the exact curve Godot uses and watch a preview move with it. Compare all 12 transition types side by side, then copy a ready-to-use Godot 4 create_tween() line for the property and duration you chose.

Step 1 of 3: Transition
Pick a Tween.TransitionType
TRANS_CUBIC: Power of 3, a good default for UI.

How to use it

  1. Pick a transition type such as Cubic, Elastic or Bounce and press Next.
  2. Pick an ease type: Ease in, Ease out, Ease in-out or Ease out-in, and press Next.
  3. Choose the property to animate, its end value and the duration in seconds.
  4. Press Plot the curve to see the curve, the moving preview and every transition for comparison. Press Replay to watch it again.
  5. Press Copy code and paste the script into your Godot project.

How Godot's transition and ease types fit together

A Godot 4 tween has two settings that shape its motion. The transition type (Tween.TransitionType) picks the curve: TRANS_LINEAR, TRANS_SINE, TRANS_QUINT, TRANS_QUART, TRANS_QUAD, TRANS_EXPO, TRANS_ELASTIC, TRANS_CUBIC, TRANS_CIRC, TRANS_BOUNCE, TRANS_BACK and TRANS_SPRING. The ease type (Tween.EaseType) picks which end of the animation the curve applies to: EASE_IN starts slowly and speeds up, EASE_OUT starts quickly and slows down, EASE_IN_OUT is slowest at both ends, and EASE_OUT_IN is fastest at both ends.

If you never call set_trans() or set_ease(), a tween uses TRANS_LINEAR and EASE_IN_OUT. Calling them on the Tween sets the default for the tweeners you add after the call, while chaining them on one tween_property() call sets that tweener only. Linear motion is the same for every ease type, so the tool leaves set_ease() out of the code for TRANS_LINEAR.

The curves here are ported from Godot's own easing_equations.h, which is derived from Robert Penner's easing equations, and checked against values printed by Godot 4.7. Godot adds a few small tweaks of its own: TRANS_EXPO is offset by a thousandth so it leaves its start value without a jump, and EASE_IN_OUT for TRANS_BACK and TRANS_ELASTIC uses a larger overshoot and a wider wobble than the in and out versions.

Which easing to use for common game animations

UI panels and menus: TRANS_CUBIC or TRANS_QUART with EASE_OUT feels responsive, because the panel moves quickly at first and settles gently. Keep it short, around 0.15 to 0.3 seconds, so menus never feel slow.

Pop-ups, coins and pickups: TRANS_BACK with EASE_OUT overshoots the target slightly and settles, which reads as playful. TRANS_ELASTIC and TRANS_SPRING wobble more, so save them for juicy effects rather than menus players open often.

Falling or dropping objects: TRANS_BOUNCE with EASE_OUT bounces at the end like a dropped ball. Fades: TRANS_SINE or TRANS_QUAD on modulate:a, since a soft curve hides the moment the fade starts and ends. Camera moves: TRANS_SINE with EASE_IN_OUT avoids a sudden start and stop.

Overshooting curves (Back, Elastic and Spring) go past the end value before settling, and Back with EASE_IN dips below the start first. Leave room on screen for that, or the object can clip into walls or off the edge.

Writing the tween in Godot 4

The copied code calls create_tween() on the node, then tween_property(self, property, end_value, duration). Tweens start immediately, so create one only when you want the animation to play, and create a new tween each time instead of reusing an old one, which the Godot docs say leads to undefined behavior.

A property path with a colon animates one component only, for example "position:x" or "modulate:a". The end value must match the property's type, which is why the code writes 300.0 for a float and Vector2(1.5, 1.5) for scale. Add .as_relative() to treat the end value as an offset from the current value, or .from(value) to set a custom start value.

Frequently asked questions

What is the default easing for a Godot tween?
A Godot 4 tween uses TRANS_LINEAR and EASE_IN_OUT until you call set_trans() or set_ease(). Because linear motion ignores the ease type, an unchanged tween moves at a constant speed.
What is the difference between set_trans and set_ease in Godot?
set_trans() picks the shape of the curve, such as sine, cubic or bounce. set_ease() picks where that shape applies: at the start with EASE_IN, at the end with EASE_OUT, or at both ends with EASE_IN_OUT and EASE_OUT_IN.
How many transition types does Godot's Tween have?
Godot 4 has 12 transition types: Linear, Sine, Quint, Quart, Quad, Expo, Elastic, Cubic, Circ, Bounce, Back and Spring. Each one combines with 4 ease types.
Are Godot's easing curves the same as easings.net?
Mostly, since both come from Robert Penner's easing equations, but Godot has small differences such as the offset on Expo and the larger overshoot on Back and Elastic in-out. Godot also adds Spring and the out-in ease type. This tool plots Godot's versions.
How do I make a tween overshoot and settle in Godot?
Use set_trans(Tween.TRANS_BACK) with set_ease(Tween.EASE_OUT) for a small overshoot, or TRANS_ELASTIC or TRANS_SPRING for a wobble. Plot them here to compare how far each one goes past the end value.

See all tools