LERP (interpolacion lineal) en Unity

En este articulo, veremos algo llamado interpolación lineal o LERP.

Preferiblemente, es necesario algunos conocimientos en Unity y matemáticas.



Que es...

LERP es un cambio de un punto A, a uno B con un tiempo determinado, son como las animaciones pero, por código.

Implementación

Para demostrar lo fácil que es implementarlo, haremos un ejemplo, digamos que necesitamos que un objeto se mueva, rote y cambie de color. Lo haremos así:

Primero creamos un nuevo script.

La imagen anterior muestra como sera el uso de la interpolación, es una "plantilla".

En las lineas 7, 8 y 9; tenemos las variables de punto de inicio, el punto final, y su tiempo de duración.

En la linea 11, tenemos OnEnable() que si no saben que es, es una función que se activa cuando el objeto es activado (explicación corta).

En la linea 16 tenemos una corrutina, (si no saben pueden ingresar aquí Corroutinas en unity un link a la documentación oficial) que se activa en la linea 13.

En la corroutina Lerp, pedimos el punto de partida, el del final y un tiempo. Entonces, dentro de ella creamos una variable para saber el tiempo transcurrido y, por temas didácticos, otra variable que guardara la interpolación.

Dentro del while, se ejecutara mientras el tiempo transcurrido sea menor al tiempo de duración. 

Ademas tenemos el uso de la función de interpolación en la linea 21: Mathf.Lerp(a, b, transcurrido / t); que como ya se a explicado, hace que tome todos los valores entre a y b con un tiempo t... Sono difícil... Pero una imagen para entender:

En la imagen anterior se ve el cambio que tiene, que empieza desde un valor mínimo A con tiempo en 0, a un valor máximo B con un tiempo 1. Porque tiempo 0 y 1... Eso lo define Unity como si fueran bits, el valor 0: es el inicial; y el valor 1: es el final.


Bueno... Mucho texto... Ahora si vamos con varios ejemplos...

1. Mover el objeto

En este ejemplo, podemos mover un objeto en una posición inicial (que la toma en la linea 13). Algo importante es que para poder usar la interpolación en vectores, cambiamos y usamos Vector3.Lerp para poder efectuar el movimiento adecuadamente.

2. Rotar el objeto


Aquí es un poco mas complicado, pero lo que hace es rotar el objeto, ademas en la linea 22 usamos curvas, que para hacer una explicación corta, es una función la cual crea una linea editable que sustituye un valor fijo, como el tiempo.

3. Cambio de color

En este ejemplo pedimos desde el inspector dos colores, el de inicio y final, usamos también la curva, y obviamente cambiamos y usamos Color.Lerp para poder efectuar el cambio de color.


Vimos una muestra del uso de LERP, y así poder hacer "animaciones" por código.