Suggest a change## Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close## Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close ## Description

Linearly interpolates between two points.

Interpolates between the points `a`

and `b`

by the interpolant `t`

. The parameter `t`

is clamped to the range [0, 1]. This is most commonly used to find a point some fraction of the way along a line between two endpoints (e.g. to move an object gradually between those points).

The value returned equals (b - a) * t.
When `t`

= 0 returns `a`

.
When `t`

= 1 returns `b`

.
When `t`

= 0.5 returns the point midway between `a`

and `b`

.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
// Transforms to act as start and end markers for the journey.
public Transform startMarker;
public Transform endMarker;

// Movement speed in units per second.
public float speed = 1.0F;

// Time when the movement started.
private float startTime;

// Total distance between the markers.
private float journeyLength;

void Start()
{
// Keep a note of the time the movement started.
startTime = Time.time;

// Calculate the journey length.
journeyLength = Vector3.Distance(startMarker.position, endMarker.position);
}

// Move to the target end position.
void Update()
{
// Distance moved equals elapsed time times speed..
float distCovered = (Time.time - startTime) * speed;

// Fraction of journey completed equals current distance divided by total distance.
float fractionOfJourney = distCovered / journeyLength;

// Set our position as a fraction of the distance between the markers.
transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fractionOfJourney);
}
}