Velocidad en Curva Bézier

La animación se sentía aburrida y tiesa. Hacía falta añadir velocidad en la entrada y salida de entidades.

Como cada segmento de las curvas solo incluye dos puntos y mi implementación une todos los segmentos necesarios para lograr cualquier tamaño requerido, añadir velocidad fue un poco tedioso.

fromSpeed = speed * accelerationMultiplier;
toSpeed = speed;

Además de la interpolación lineal básica (línea 120), tengo que modificar la variable que representa la velocidad (finalSpeed).

bezier.derivativeAt(tmpA, lerp);

lerp += finalSpeed / tmpA.len();

Necesito otra variable que represente la interpolación lineal de la velocidad (speedLerp)

speedLerp = Math.min(speedLerp + (speed / tmpA.len()) / deceleratePosition, 1);

finalSpeed = MathUtils.lerp(fromSpeed, toSpeed, speedLerp);

Con todo ya calculado, puedo entonces conseguir el valor del punto en pantalla que corresponde a ese tiempo.

bezier.valueAt(tmpB, lerp);

Y asi se ve:

Únete a otros 36 suscriptores

Deja una respuesta

Anuncios


Consola en pantalla 

Algo que siempre he querido tener es la consola visual en pantalla. Lo encuentro útil porque puedo ver el evento directo sin tener que desviar la mirada hacia la consola.

Continua Leyendo…
Anuncios