En este brevísimo tutorial de programación en Unity 2D, les mostraré cómo hacer que la cámara siga al personaje principal con un ligero retraso en lugar de hacerlo de forma instantánea, para poder crear transiciones más suaves.



Transcripción del video

¡Hola a todos! En este brevísimo tutorial de programación en Unity 2D, les mostraré cómo hacer que la cámara siga al personaje principal con un ligero retraso en lugar de hacerlo de forma instantánea, para poder crear transiciones más suaves.

Este tutorial está pensado para quienes ya están familiarizados con el concepto de Delta Time en Unity y, posiblemente, con interpolaciones como Slerp. Ya he tratado estos conceptos en otros tutoriales básicos, que pueden encontrar como videos en inglés en el canal y como versiones escritas, en varios idiomas, en mi sitio web.

En el ejemplo que mostraré, escribiré el código para el movimiento a lo largo del eje X por simplicidad, pero puede ampliarse fácilmente también al movimiento vertical a lo largo del eje Y.

Comencemos desde el script base, que vincula la posición de la cámara con la posición del personaje a seguir. El script, aquí llamado Camera Controller, incluye de inmediato una variable privada de tipo Transform que debe asignarse en el editor al objeto que se desea seguir, para poder recuperar su posición.

En la función Update, tenemos una variable de tipo float que obtiene la coordenada X de la posición del jugador y se utiliza en la posición de la cámara en lugar de la propia coordenada X de la cámara, en un valor llamado Camera X, de modo que la cámara siga al personaje de forma instantánea.

La primera variación que probamos utiliza Lerp, por lo que introduzco una variable privada llamada Follow Time, de tipo float, que puede ajustarse en el editor para la calibración. En la función Update, utilizo la opción número 2 para definir la coordenada X de la cámara, que ahora viene dada por el resultado de la función Lerp.

Lerp es una función nativa de Unity que realiza una interpolación lineal entre la posición actual del objeto, dada por Transform Position, y la posición objetivo, dada por Player Position. El parámetro de interpolación está representado por la relación entre Delta Time y la variable Follow Time, lo que permite controlar la velocidad con la que la cámara se acerca progresivamente a la posición objetivo y facilita ajustar este comportamiento también durante la ejecución en el editor.

Con la función Lerp, en cada frame la cámara actualiza su posición acercándose progresivamente al objetivo. De este modo, el movimiento de la cámara resulta menos brusco en comparación con un desplazamiento instantáneo. Sin embargo, Lerp realiza una interpolación lineal sin amortiguar la velocidad cerca del destino, y esto puede hacer que el movimiento resulte menos natural en la fase final de aproximación. Para obtener una transición más suave entra en juego el método Smooth Damp.

Luego pongo a disposición dos nuevas variables, llamadas Smooth Time y Velocity. En particular, Smooth Time es un float privado que se utiliza para ajustar la interpolación, igual que Follow Time en el caso de Lerp. La variable Velocity es en cambio un float que se pasa al método Smooth Damp para almacenar la velocidad actual durante la ejecución.

El método nativo Smooth Damp permite implementar un movimiento menos brusco y amortiguado, en el que la velocidad disminuye a medida que la cámara se acerca a la posición de destino. La variable Velocity representa la velocidad actual de la cámara a lo largo del eje considerado. Velocity se pasa al método por referencia y se actualiza automáticamente en cada frame durante la interpolación.

En el código, la coordenada X de la cámara ahora es el resultado de una interpolación realizada mediante Smooth Damp, conceptualmente similar a Lerp porque interpola entre dos valores, pero produciendo una transición más suave y, en la firma del método, utilizando también la variable float Velocity.

Smooth Damp puede considerarse como una evolución de Lerp que introduce una amortiguación progresiva de la velocidad, haciendo que el movimiento resulte más natural.

Bien, eso es todo por este video. Si les resultó útil, pueden agradecérmelo con un Like y suscribiéndose al canal. ¡Nos vemos pronto!

Este sitio web tiene como único propósito mostrar algunos de mis trabajos, sin ninguna intención promocional. Ten en cuenta que actualmente no estoy buscando - ni responderé a - solicitudes de trabajos personalizados, consultorías u otro tipo de colaboraciones profesionales.


POLÍTICA EXTENDIDA DE PRIVACIDAD Y UTILIZACIÓN DE COOKIES