java opengl 2d libgdx smooth-scrolling

java - ¿Cómo hacer que una cámara siga el algoritmo?



opengl 2d (2)

Estoy haciendo un juego con LibGDX (Java).

Necesito la cámara para seguir un personaje en movimiento rápido. La forma más fácil de hacerlo es escribir esto:

this.getCamera().position.set(obj.x, obj.y, 0);

Pero, ¿hay algún algoritmo para hacer esto más suave? Como cuando la cámara no es tan estricta, y siempre es un poco tarde: el personaje va rápido a la derecha, la cámara lo sigue con un ligero retraso, o si apareciste repentinamente en algún lugar lejano, la cámara no se teletransporta al instante, sino que te desplaza a la velocidad máxima cuando se acerca más, se ralentiza un poco y te encuentra de nuevo.

¿Hay libs libgdx que hacen eso o alguien tuvo esta experiencia?


Eche un vistazo al motor universal de tween Java de Aurelion Ribon. Esto realiza la interpolación y tiene varias ecuaciones de alivio que creo que le darían lo que está buscando. También tiene otras características avanzadas como puntos de referencia y encadenamiento de ciertas acciones para otros efectos interesantes.

Su lógica de juego podría verificar si el personaje se está moviendo rápidamente o si tiene un cambio de paso en términos de posición. En respuesta a esto, gire la posición actual de la cámara hacia el motor de interpolación y deje que tome el control, haciendo un zoom suave a la posición actual del personaje.


Intenta algo simple como pasar una décima parte de la distancia. Funciona sorprendentemente bien.

float lerp = 0.1f; Vector3 position = this.getCamera().position; position.x += (Obj.x - position.x) * lerp * deltaTime; position.y += (Obj.y - position.y) * lerp * deltaTime;