# SmoothStep(float, float, float)

> Interpolates between from and to with smoothing at the limits.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static float SmoothStep(float from, float to, float t)
```

### Parameters

**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The start of the range.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The end of the range.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The interpolation value between the `from` and `to` range limits.

### Returns

| Type                                                          | Description                                            |
| ------------------------------------------------------------- | ------------------------------------------------------ |
| [float](https://learn.microsoft.com/dotnet/api/system.single) | The interpolated float result between `from` and `to`. |

### Remarks

This function interpolates between `from` and `to` in a similar way to [Mathf.Lerp](/engine/6000.7/script-reference/unityengine/mathf/lerp.md). However, the interpolation will gradually speed up from the start and slow down toward the end. This is useful for creating natural-looking animation, fading and other transitions.

The parameter `t` is clamped to the range \[0, 1].

### Examples

```csharp
using UnityEngine;

public class Example : MonoBehaviour
{
    // Minimum and maximum values for the transition.
    float minimum = 10.0f;
    float maximum = 20.0f;

    // Time taken for the transition.
    float duration = 5.0f;

    float startTime;

    void Start()
    {
        // Make a note of the time the script started.
        startTime = Time.time;
    }

    void Update()
    {
        // Calculate the fraction of the total duration that has passed.
        float t = (Time.time - startTime) / duration;
        transform.position = new Vector3(Mathf.SmoothStep(minimum, maximum, t), 0, 0);
    }
}
```
