# GDScript: Godot Curves

Source: https://tweens.gd/gdscript/curves/

Draw your own easing in the Inspector as a Godot `Curve` when a built-in family does not fit. The tween samples it over its progress.

Examples use the global `Tweens` class in a node script, with targets inside the scene tree.

## Use a Curve Resource

Create a `Curve` resource in the Inspector and shape its points over the 0–1 domain. Export a field to assign it:

curve\_motion.gd

```gdscript
extends Sprite2D

@export var motion_curve: Curve

func _ready() -> void:
    var move := Tweens.position_2d_x(300.0, 0.6)
    move.curve = motion_curve
    Tweens.play(self, move)
```

Each playback gets its own curve copy, so edits affect later starts.

Time in, weight out

The x axis is progress, from 0 to 1. A height of 0 holds the start value and 1 the end value. Raise the curve’s Max Value above 1 for overshoot.

Choose one custom source

Set `curve` or an [`ease_function`](https://tweens.gd/gdscript/functions/), not both. Either overrides the built-in ease. Custom profiles keep their own pacing instead of using the In/Out split controls.

[Functions](https://tweens.gd/gdscript/functions/)Write an ease in code instead.

[Easing playground](https://tweens.gd/easings/)Check whether a built-in family fits first.

The [easing reference](https://tweens.gd/gdscript/api/easing/#custom-functions-and-curves) covers validation and failures.
