---
title: "Interpolación linear"
content_type: tutorial
url: "https://learn.unity.com/course/scripting-para-principiantes/tutorial/interpolacion-linear?language=es"
language: es
container_type: course
container_title: "Scripting para principiantes"
container_url: "https://learn.unity.com/course/scripting-para-principiantes.md?language=es&version=4.x"
standalone_markdown_url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=4.x"
previous_title: "Look At (Mirar hacia)"
previous_url: "https://learn.unity.com/course/scripting-para-principiantes/tutorial/look-at-mirar-hacia?language=es&version=4.x"
previous_markdown_url: "https://learn.unity.com/course/scripting-para-principiantes/tutorial/look-at-mirar-hacia.md?language=es&version=4.x"
next_title: "Destruir"
next_url: "https://learn.unity.com/course/scripting-para-principiantes/tutorial/destruir?language=es&version=4.x"
next_markdown_url: "https://learn.unity.com/course/scripting-para-principiantes/tutorial/destruir.md?language=es&version=4.x"
difficulty: beginner
duration_minutes: 10
unity_version:
  - "2019.3"
  - "2019.2"
  - "2019.1"
  - "2018.4"
  - "2018.3"
  - "2018.2"
  - "2018.1"
  - "2017.4"
  - "2017.3"
  - "2017.2"
  - "2017.1"
  - "5.x"
  - "4.x"
supported_unity_versions:
  - name: "2019.3"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2019.3"
  - name: "2019.2"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2019.2"
  - name: "2019.1"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2019.1"
  - name: "2018.4"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2018.4"
  - name: "2018.3"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2018.3"
  - name: "2018.2"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2018.2"
  - name: "2018.1"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2018.1"
  - name: "2017.4"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2017.4"
  - name: "2017.3"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2017.3"
  - name: "2017.2"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2017.2"
  - name: "2017.1"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=2017.1"
  - name: "5.x"
    url: "https://learn.unity.com/tutorial/interpolacion-linear.md?language=es&version=5.x"
  - name: "4.x"
    url: "https://learn.unity.com/course/scripting-para-principiantes/tutorial/interpolacion-linear.md?language=es&version=4.x"
last_updated: "2026-08-04T14:25:00.000Z"
---

# Interpolación linear

Aprende a usar la función Lerp en scripts de C# para interpolar linealmente entre dos valores en la lógica de tu juego.

Cuando estamos desarrollando juegos a veces puede ser útil interpolar dos valores linealmente. Esto se hace con una función llamada _Lerp_.

Este tutorial está incluido en el proyecto _Scripting_ para principiantes.

Previo: [Look At (Mirar hacia)](https://learn.unity.com/tutorial/look-at-s?projectId=5c8920b4edbc2a113b6bc26a)

Siguiente [Destroy (Destruir)](https://learn.unity.com/tutorial/destroy-i?projectId=5c8920b4edbc2a113b6bc26a)

## 1. Interpolación linear

Cuando estamos desarrollando juegos a veces puede ser útil interpolar dos valores linealmente. Esto se hace con una función llamada _Lerp_. La interpolación linear es figurar el valor que es un porcentaje de dos valores determinados.

En Unity hay algunas funciones _Lerp_ que se pueden usar para diferentes tipos de datos. Para el ejemplo que acabo de usar, el equivalente sería la función Mathf.Lerp y se vería así:

```csharp
// In this case, result = 4
float result = Mathf.Lerp (3f, 5f, 0.5f);
```

 La función Mathf.Lerp toma tres parámetros _float_ (de punto flotante): uno que representa el valor del cual se va a interpolar, otro representando cuán lejos se llegará a interpolar. En este caso el valor de interpolación es 0,5, lo cual significa 50%. Si fuera 0, la función regresaría el valor «from» y si fuera 1 la función regresaría el valor «to».

Otros ejemplos de funciones Lerp incluyen Color.Lerp y Vector3.Lerp. Estas funcionan en la misma manera que Math.Lerp pero los valores «from» y «de» son de tipo Color y Vector3 respectivamente. El tercer parámetro en cada caso todavía es un _float_ que representa cuánto se interpola. El resultado de estas funciones es encontrar un color que sea una mezcla de dos colores determinados y un vector que sea el porcentaje de la trayectoria entre dos vectores determinados.

Vamos a echarle un vistazo a otro ejemplo:

```csharp
Vector3 from = new Vector3 (1f, 2f, 3f);
Vector3 to = new Vector3 (5f, 6f, 7f);

// Here result = (4, 5, 6)
Vector3 result = Vector3.Lerp (from, to, 0.75f);
```

En este caso el resultado es (4, 5, 6) porque 4 es 75% de la trayectoria entre 1 y 5; 5 es 75% de la trayectoria entre 2 y 6 y 6 es 75% de la trayectoria entre 3 y 7.

El mismo principio se aplica cuando se usa Color.Lerp. En la _struct_ (estructura) Color, los colores se representan by 4 _floats_ que representan rojo, azul, verde y alfa. Cuando se usa Lerp, estos _floats_ están interpolados al igual que con Mathf.Lerp y Vector3.Lerp.

Bajo algunas circunstancias las funciones Lerp se pueden usar para regularizar valores en un período de tiempo determinado. Considera el siguiente trozo de código:

```csharp
void Update ()
{
    light.intensity = Mathf.Lerp(light.intensity, 8f, 0.5f);
}
```

Si la intensidad de la luz comienza en 0 y luego después de la primera actualización será configurada a 4. En el siguiente marco será configurada a 6, luego a 7, luego a 8 y de así en adelante. Por lo tanto, a través de varios marcos, la intensidad de la luz irá hacia 8 pero su cambio disminuirá de velocidad a media que se acerque a su meta. Se debe tener en cuenta que esto ocurre a través de varios marcos. Si queremos que esto sea dependiente del marco podríamos usar el código siguiente:

```csharp
void Update ()
{
    light.intensity = Mathf.Lerp(light.intensity, 8f, 0.5f * Time.deltaTime);
}
```

Esto significaría que el cambio a intensidad ocurriría por segundo en vez de por marco.

Por favor ten en cuenta que cuando se regulariza un valor es mejor que uses la función SmoothDamp. Usa Lerp solo para regularizar si estás segura de que es el efecto que quieres.
