# C#: Godot Curves

Source: https://tweens.gd/csharp/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 `using Godot;` and `using tweens.gd;`, 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:

CurveMotion.cs

```csharp
public partial class CurveMotion : Sprite2D
{
    [Export] public Curve MotionCurve { get; set; } = new();

    public override void _Ready()
    {
        var move = new Tweens.Position2DX(300, 0.6) { Curve = MotionCurve };
        this.Tween(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 [`EaseFunction`](https://tweens.gd/csharp/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/csharp/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/csharp/api/easing/#custom-functions-and-curves) covers validation and failures.
