🌟 Crear un videojuego de plataformas con Unity 🎮 5 – Programando la cámara para seguir al jugador

En el fascinante mundo de los videojuegos, uno de los elementos más importantes para brindar una experiencia de juego fluida y envolvente es la cámara. La cámara en un videojuego de plataformas es el ojo del jugador, y su correcta programación puede marcar la diferencia entre una experiencia agradable y una frustrante. En este artículo, exploraremos cómo programar la cámara en un videojuego de plataformas 2D utilizando el popular motor de desarrollo Unity.



Configuración básica de la cámara

Antes de sumergirnos en la programación, es esencial configurar correctamente la cámara en Unity. Aprenderemos a crear una nueva cámara en la escena, establecer su tamaño y posición, y ajustar su relación de aspecto para adaptarse al estilo visual del juego.

  1. Crear una nueva cámara: El primer paso es agregar una cámara a tu escena en Unity. Para hacerlo, selecciona la pestaña "GameObject" en la parte superior de la ventana de Unity y elige "Camera". Esto creará una nueva cámara en tu escena.
  2. Ajustar el tamaño y la posición de la cámara: Una vez que hayas creado la cámara, selecciona su objeto en la jerarquía de la escena o en la ventana "Scene". A continuación, puedes ajustar su tamaño y posición para obtener el encuadre deseado. Puedes cambiar el tamaño y la forma de la cámara ajustando sus propiedades "Size" y "Aspect" en el inspector.
  • El valor de "Size" determina la altura visible de la cámara en unidades del mundo. Un valor mayor dará una vista más amplia, mientras que un valor menor acercará el campo de visión.
  • La propiedad "Aspect" define la relación de aspecto de la cámara. Asegúrate de ajustarla según la relación de aspecto deseada para tu juego (por ejemplo, 16:9 para una pantalla panorámica).
  1. Establecer la cámara como cámara principal: En Unity, debes designar una cámara principal que represente la vista del jugador. Para hacerlo, selecciona la cámara que has creado y marca la casilla "Main Camera" en el inspector. Esto establecerá la cámara como la cámara principal de la escena.
  2. Ajustar la proyección de la cámara: La proyección de la cámara determina cómo se proyecta la escena en la pantalla. Unity ofrece dos opciones principales: perspectiva y ortográfica.
  • La proyección perspectiva crea una ilusión de profundidad y es ideal para la mayoría de los juegos de plataformas 2D. Puedes seleccionarla marcando la casilla "Perspective" en las propiedades de la cámara.
  • La proyección ortográfica, por otro lado, proporciona una vista bidimensional sin perspectiva y es más adecuada para juegos con un estilo visual plano o retro.
  1. Configuración adicional: Si lo deseas, puedes explorar otras propiedades de la cámara en el inspector para ajustar su comportamiento según tus necesidades específicas. Por ejemplo, puedes activar o desactivar la opción "Clear Flags" para controlar si la cámara borra el fondo de la escena o lo conserva.

Seguimiento del personaje

Un aspecto clave de la cámara en un videojuego de plataformas es seguir al personaje principal de manera suave y precisa. Exploraremos diferentes técnicas para lograr esto, como el seguimiento suave y la limitación de la cámara dentro de los límites de la escena. También cubriremos cómo ajustar la velocidad y la suavidad del seguimiento para brindar una experiencia más pulida.

Vamos con un pequeño ejemplo de script que añadiremos a la cámara que usaremos para ver al personaje:

using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    public Transform target; // Objeto que la cámara seguirá
    public float smoothSpeed = 0.125f; // Velocidad de suavizado del seguimiento
    public Vector3 offset; // Offset de la posición de la cámara respecto al objeto

    public float minX, maxX, minY, maxY; // Límites de la escena

    private void LateUpdate()
    {
        if (target == null)
            return;

        Vector3 desiredPosition = target.position + offset;
        Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
        Vector3 clampedPosition = new Vector3(
            Mathf.Clamp(smoothedPosition.x, minX, maxX),
            Mathf.Clamp(smoothedPosition.y, minY, maxY),
            transform.position.z
        );

        transform.position = clampedPosition;
    }
}

Vamos con al explicación del script. Como puedes ver, tenemos varias variables que podremos configurar en el editor, estas son target, smoothSpeed, offset, minX, maxX, minY y maxY.

  • target representa el objeto que la cámara seguirá, para nuestro ejemplo debemos arrastrar el gameobject del jugador donde añadimos el playerController.
  • smoothSpeed determina la suavidad del movimiento de la cámara al seguir al objeto, ajustar estos valores necesitan bastante ensayo/error por que pueden variar según las mecánicas que queramos transmitir al jugador.
  • offset permite ajustar la posición relativa de la cámara con respecto al objeto seguido, muy útil para dejar un margen entre el movimiento de la cámara y el jugador.
  • minX, maxX, minY, maxY son los límites de la escena donde la cámara se mantendrá dentro. Si queremos un juego estilo Super Mario Bros donde la cámara originalmente no subía o bajaba para ajustarse al personaje, podemos dejar minY y maxY en 0.

En el método LateUpdate, se realiza el seguimiento suave y se limita la posición de la cámara:

  • Se calcula la posición deseada de la cámara sumando el offset al objeto seguido.
  • A través de Vector3.Lerp, se realiza una interpolación lineal suave entre la posición actual de la cámara y la posición deseada, con la velocidad determinada por smoothSpeed.
  • Se asegura de que la posición clampedPosition esté dentro de los límites de la escena utilizando Mathf.Clamp.
  • Finalmente, se actualiza la posición de la cámara al valor clampedPosition.

Puedes ajustar los valores de smoothSpeed y offset en el inspector de Unity para lograr la experiencia de seguimiento deseada. Además, asegúrate de asignar el objeto que deseas seguir al campo target del script en Unity.



Con esto ya tendríamos nuestra cámara configurada y programada para nuestro futuro juego de plataformas. Seguiremos trabajando con la cámara en el futuro post, ya que quiero explicar como crear un movimiento paralax.

Espero que este post te haya sido útil y te haya brindado una base sólida para continuar tu aventura en el desarrollo de videojuegos. ¡No dudes en compartir tus proyectos y experiencias en los comentarios! Hasta la próxima entrada y ¡feliz desarrollo de juegos!

Comentarios

Entradas populares de este blog

Metal Gear Solid V Analisis sin spoilers 2: Gráficos Antigua Generación VS Nueva Generación

IA: Seguir objetivo y esconderse en Unity3D

🌟 Crear un videojuego de plataformas con Unity 🎮 6 – Crear efecto parallax