Les dejo un video para el que quiera aprender un poco mas sobre lerp https://www.youtube.com/watch?v=_nqF57833YY&t=3s
Introducción
Bienvenida al curso
Introducción a los Scripts en Unity: Ciclo de vida y métodos
OnDisable, OnDestroy, OnMouseDown
Usando la consola de una forma muy pro
Propiedades públicas y privadas, [SerializeField], [Header] y [HideInInspector]
Clases serializables
Causar cambios
El componente transform y los vectores
Manipulando al componente Transform
Manipulando al componente Transform: rotación y escala
Manipulando al componente Transform: vectores direccionales
Interpolaciones
Tiempo
Tiempo en Unity
Contando el tiempo: tiempo total y tiempo delta
Movimiento y tiempo
Creando movimiento independiente del framerate
Interacción
GameObjects que responden a su entorno
Leyendo al jugador (teclado)
Leyendo al jugador (teclado y gamepad)
Comunicación
Encontrando componentes
Hijos y padres
Comunicación telepática: eventos
Arquitectura
Inicializando variables
Configuración, Información e Inicialización
Cierre
Despedida del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Ruth Margarita García López
Aportes 2
Preguntas 0
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:
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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?