Tema 15. Godot Engine. Cámara 2D
Con la cámara 2D podemos recorrer más extensión del escenario que hasta ahora hemos visto. Hasta ahora, hemos creado un escenario del tamaño de nuestra resolución, óptimo para juegos donde su desarrollo sea de una única pantalla, es decir, donde se desenvuelve todo el juego.
Con la cámara 2D podemos el personaje podrá recorrer más zonas del escenario que no se ven. Es decir, el personaje tendrá una cámara que le proyectará y por las zonas en las que se va moviendo. Esto es útil para crear juegos donde el personaje realiza recorridos más largos que la propia pantalla.
Gracias a la cámara, podemos crear niveles adicionales más largos, que nuestro personaje irá recorriendo.
Crearemos un nivel con plataformas que traspasan los límites del escenario. En el ejemplo observaremos que se crean plataformas hacia la derecha, se deja un hueco, y debajo se vuelven a crear plataformas.
Nuestro escenario tiene un límite de 800×480, por lo que cuando el personaje llegue al final del escenario, desaparece por el lado derecho. El personaje sigue estando ahí, pero no lo podemos ver porque nuestro escenario tiene límites.
Gracias a la cámara, haremos que ésta siga al personaje y de esta forma también le veremos en cada lugar por donde vaya.
CÁMARA EN LA ESCENA |
Por lo tanto, añadiremos un Nodo de tipo Cámara2D que será hijo de la Escena principal que hemos creado.
Hay que tener en cuenta que esa cámara será hijo del Player y por lo tanto, si la ponemos como nodo hijo del Player, en el nodo Escena, la cámara solo será representativa para el player en ese nodo Escena. La mejor forma de implementar la cámara2D es añadirla en el Nodo Player como hijo. En este primer ejemplo añadimos la Cámara a la escena. Más abajo, en el segundo ejemplo, añadiremos la cámara al Nodo Player (mejor opción). La Cámara2D está asignada a la Escena1 como hijo del Nodo Player.
Ahora ACTIVAREMOS la propiedad Current para que la cámara siga al Jugador.
El área de la cámara aparece en forma de rectángulo de color morado. Podemos seleccionar esa área haciendo Click sobre la cruz roja y mover dicha área donde se nos acople mejor y el personaje se vea mejor y más centrado.
También podemos cambiar el zoom de la cámara. Si queremos una vista más amplia (a cambio de reducir el tamaño de la escena) podemos aumentar los parámetros del zoom X e Y
Por otro lado, si añadimos la Cámara2D al Nodo Player, el personaje siempre tendrá dicha cámara para todas las escenas en las que se encuentre. Veremos el ejemplo más abajo.
Aquí tenemos el resultado si nos movemos hacia la derecha:
AJUSTES. FULLSCREEN |
Para comprobar que nuestro proyecto funciona bien podemos activar la opción de FullScreen en la Configuración de nuestro proyecto:
Display -> Window -> Activamos FullScreen
si hacemos Play veremos nuestro juego en pantalla Completa para ver imperfecciones. Para salir de la pantalla Completa hay que pulsar una combinación de teclas. En iMAc es CMD+Q
En Linux puede ser CTRL+Q
También podemos realizar algunos ajustes en la cámara como hemos dicho anteriormente:
Cambiar el zoom
También podemos cambiar el margen Horizontal y Vertical de la Cámara: mediante las propiedades Offset H V
2º EJEMPLO. AÑADIMOS LA CÁMARA AL NODO PLAYER |
En este ejemplo añadimos el Nodo Cámara 2D como hijo de Player2 en el Nodo Player.
Si nos fijamos en el Nodo Nivel1, observaremos que el Nodo Cámara2D no se muestra, ya que es hijo en el Nodo Player.
Activaremos la propiedad Current.
La propiedad Smoothing (suavidad) nos permite establecer un movimiento más suave de la cámara. La activaremos. Notaremos un desplazamiento suave de la cámara cada vez que el personaje se detiene.
La propiedad speed nos permite establecer ese desplazamiento suave de la cámara. Seremos nosotros los que lo ajustaremos en función de nuestro juego.
Otra de las características de la cámara es que si por ejemplo, el personaje salta, el escenario también se mueve con el personaje y provoca que los tiles del suelo desaparezcan por unos momentos de la pantalla. En un juego de plataformas no se recomienda esta acción.
Modificamos los parámetros Límite de la cámara.
Al situar la cámara, por defecto, el personaje se establece en el centro. Podemos modificar los Límites de acción de juego según nos convenga:
Para poder hacerlo, la cámara no puede estar bloqueada con el candado.
Aquí vemos el Limit por defecto:
Vamos a cambiar el Limit Left a 0 y observamos la cámara:
La cámara queda así por la izquierda:
Probamos a modificar el Limit a:
Y para ver el resultado en el editor ACTIVAMOS la propiedad Editor -> Draw Limits
Resultado en color amarillo. Observamos cuales van a ser nuestros límites de cámara en el juego.
Como se puede observar se debe ajustar los límites según nuestro tamaño de pantalla.
A la parte izquierda y derecha del límite deberíamos poner pared para que no se saliese el personaje.
Si limitamos el juego a la zona amarilla, cuando el personaje salga por la derecha, desaparecerá ya que la cámara no le seguirá.
Por ejemplo, si nuestra pantalla (ajustes del proyecto) tiene una dimensiones de 854×480
Y hay dos pantallas diseñadas en nuestra escena (mundo) podemos establecer el Limit a:
1708×480