No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Introducción a Unity: Scripting

Curso de Introducción a Unity: Scripting

Ruth Margarita García López

Ruth Margarita García López

Interpolaciones

11/24
Recursos

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Les dejo un video para el que quiera aprender un poco mas sobre lerp https://www.youtube.com/watch?v=_nqF57833YY&t=3s

La interpolación lineal o LERP se usa para transcionar elementos de una manera suave de un estado “a” a un estado “b”. Es un cambio de un punto A a un punto B con un tiempo determinado, son como las animaciones pero con código.

Algunos ejemplos donde se aplica LERP son:

  • Que un objeto se mueva de una posición a otra
  • Cambiar el color gradualemnte
  • Hacer un fade in o fade out de la música.
  • Animar botones
  • Etc

Cualquier transición suave entre dos estados.

El método Mathf.Lerp(min, max, t) nos va a regresar un valor entre dos puntos de una escala lineal. Se le dan tres argumentos, un valor mínimo, un valor máximo y un valor de interpolación que será entra el valor mínimo y máximo.
Para transicionar entre dos estados es ir variando el parámetro de interpolación en el tiempo.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LerpMovement : MonoBehaviour
{
    private Vector3 startPosition = new Vector3(13, 1, -6);
    private Vector3 endPosition = new Vector3(13, 0.5, 0);
    private float desireDuration = 3; //Tres segundos va a durar
    private float elapasedTime; //El tiempo transcurrido
}

En nuestro método Update() iremos incrementando el tiempo transcurrido usando Time.deltaTime, luego obtenemos el porcentaje del tiempo que transcurrido al tiempo que queremos llegar, y actulizamos nuestra posición usando el método Vector3.Lerp().

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LerpMovement : MonoBehaviour
{
    private Vector3 startPosition = new Vector3(13, 1, -6);
    private Vector3 endPosition = new Vector3(13, 1, 0);
    private float desireDuration = 3; //Tres segundos va a durar
    private float elapasedTime; //El tiempo transcurrido

    // Update is called once per frame
    void Update()
    {
        elapasedTime += Time.deltaTime; //Incrementamos el tiempo
        float porcentageComplete = desireDuration / elapasedTime;

        transform.position = Vector3.Lerp(startPosition, endPosition, elapasedTime);

    }
}

Se va mover de una forma constante y lineal de un punto a otro.