A continuación, vamos a revisar lo que sabemos sobre la cámara y te enseñaré a hacer que esta siga al personaje sin escribir ni una sola línea de código, tan solo usando la grandísima herramienta que Unity nos brinda llamada “Cinemachine”
Para ello nos vamos a la opción de Window>Package Manager>Cinemachine y la instalamos
Una vez instalado nos aparecerá una nueva opción dentro de nuestro menú superior llamado Cine- machine desde él vamos a pulsar encima y elegimos crear una nueva 2d Camara
Esto lo que nos va a crear es una cámara virtual.
Por un lado tenermos este nuevo objeto que es la cámara virtual 1 y dentro de la camara principal, la Main Camera tendremos un icono rojo que va a ser el cerebro que controla a esta camara virtual. Por lo que si seleccionamos la MainCamera y nos vamos al inspector tendremos un nuevo componente llamado CinemachineBrain desde el cual vamos a definir su comportamiento
Dentro del inspector de la MainCamera vamos a dejarlo casi igual. Solo cambiaremos el Update method a Fixed Update
Y hacemos lo mismo con el Blend Update Method
Cogemos la camara Virtual y la ponemos justo despues de la Main Camera:
A continuación creamos un objeto vacio llamado GameCameras
Este lo reseteamos. Es decir pulsamos en la pestaña de Transform los tres puntitos que aparecen lo más a la derecha posible de dicha pestaña y de las opciones que aparecen pulsamos Reset.
Metemos las dos camaras creadas anteriormente dentro del GameCameras
Y subimos el GameCameras en la primera posición de la Jerarquía.
El siguiente paso es configurar nuestra camara virtual. Para ello la seleccionamos y desde el inspector nos vamos a la opción de follow ahí arrastraremos el objeto Player ya que de esta manera nuestra camara seguirá a nuestro personaje.
Ahora lo que ocurre es que la camara si sigue a nuestro personaje pero al llegar al borde del mapa se ve también el mismo borde y eso queda feo así que para arreglarlo vamos a hacer una serie de configuraciones.
Lo primero de todo vamos a crear un objeto vacio dentro de nuestro GameCameras y lo llamamos Confiner. Abrimos su inspector y le añadimos un componente llamado Polygon Collider 2D
Cambiamos la Layer a UI
Y marcamos la opción de que sea un IsTrigger
Ahora dentro de la opción EditCollider dejamos marcado el botón para que de este modo podamos editar el poligono que aparecerá en nuestra escena.
En la pestaña escena si nos fijamos ha aparecido un pentágono con líneas verdes y unos cuadrados verdes en sus vertices dichos cuadrados los moveremos para que cojan los extremos del mapa cuadrado que tenemos.
Una vez que tenemos nuestro poligono ocupando los límites de nuestro mapa nos vamos a la camara virtual y añadimos desde el Inspector una Extensión llamada CinemachineConfiner
A este script debemos añadirle el objeto Confiner que hemos creado dentro de la opción Bounding Shape 2D desde la pestaña de Jerarquía
Ahora si movemos a nuestro personaje podremos ver que cuando nos aproximamos a los bordes del mapa nuestra camara no avanza más.
Hecho esto vamos a seguir configurando nuestra camara para que nuestro juego este lo más acabado posible.
Por lo que nos vamos a la Main Camera y le vamos a añadir un componente llamado Pixel Perfect Camera dentro de la pestaña de Inspector
Ya que el estilo de este juego es Pixel art vamos a resaltarlo con este componente por lo que en su resolución vamos a poner que sea de 135 x 240
Y el Pixel per unit debe de estar en 16 ya que ese es el tamaño de nuestros Tiles en nuestro juego. Y para que la textura de nuestro render se vea con ese estilo dejamos marcada Upscale Render Texture
Ahora nos vamos al objeto camara virtual y vamos a añadir una nueva extensión para que sea compatible el movimiento de la camara y el componente Pixel Perfect
Con esto ya tendríamos configurada nuestra camara para nuestro juego. Un último paso que haremos será crear un prefab de nuestras camaras. Arrastraremos nuestro GameCameras de la pestaña de Jerarquía a la carpeta de prefabs para que de esta manera podamos utilizar la configuración de nuestras camaras en cualquier escena que hagamos dentro de nuestro juego configuración de nuestras camaras en cualquier escena que hagamos dentro de nuestro juego
Cinemachine es un sistema de cámara avanzado para Unity que facilita la configuración y gestión de cámaras en tus proyectos. Puedes instalar Cinemachine a través del Package Manager de Unity:
1. Instalar Cinemachine:
1.1. Abrir el Package Manager:
- Ve a «Window» -> «Package Manager» en la barra de menú.
1.2. Seleccionar Cinemachine:
- En el Package Manager, selecciona la pestaña «Unity Registry».
- Busca «Cinemachine» y haz clic en «Install» para instalar la última versión.
2. Configurar la Cámara Principal:
2.1. Crear una Cámara:
- Añade una cámara a tu escena (GameObject -> Camera).
- Puedes desactivar la cámara principal si ya hay una en la escena.
2.2. Asociar Cinemachine:
- Selecciona la cámara y haz clic en «Add Cinemachine Brain» en la parte superior del Inspector.
- Esto asignará automáticamente un componente Cinemachine Brain a la cámara.
3. Añadir un Virtual Camera:
3.1. Crear una Virtual Camera:
- Haz clic derecho en la jerarquía y selecciona «Cinemachine» -> «FreeLook Camera» o «Virtual Camera» (dependiendo de tus necesidades).
3.2. Configurar la Virtual Camera:
- En el Inspector, ajusta las propiedades de la Virtual Camera, como el Follow y Look At (objetos a seguir y mirar, respectivamente).
- Puedes cambiar la configuración para que la cámara siga a tu jugador o cualquier otro objeto.
4. Ajustar Prioridades de Cámara (Opcional):
4.1. Prioridades:
- Si tienes varias Virtual Cameras, puedes ajustar sus prioridades para determinar cuál es activa en un momento dado.
- Las cámaras con prioridades más altas se activarán antes que las de prioridades más bajas.
5. Configurar Transiciones entre Cámaras (Opcional):
5.1. Transiciones:
- Puedes configurar transiciones entre cámaras para crear cambios suaves durante el juego.
- Esto es útil para transiciones de escenas o cambios de enfoque en la jugabilidad.
6. Testear y Ajustar:
6.1. Pruebas:
- Ejecuta tu escena y prueba la configuración de la cámara.
- Ajusta las propiedades según sea necesario para lograr el comportamiento deseado.
7. Scripting (Opcional):
7.1. Acceso a Cinemachine desde Script:
- Puedes acceder a Cinemachine desde scripts para realizar ajustes dinámicos o realizar transiciones programáticamente.
using UnityEngine; using Cinemachine; public class MiScript : MonoBehaviour { publicCinemachineFreeLook freeLookCamera; void Start() { // Acceder y modificar propiedades de la cámara desde el script freeLookCamera.m_Lens.FieldOfView = 60f; } }