Godot 2D #4: Cámara que sigue al Jugador

13.04.2020

¡Muy buenas a todos!

Es hora de hacer una cámara que siga siempre a nuestro personaje.

Así podremos ver distintas partes de un nivel o de un mapa. 

Esta entrada corresponde a la parte escrita del vídeo que he hecho en YouTube. Si quieres ver este mismo tutorial de una forma más visual, no dudes en echarle un vistazo. Además, este vídeo incluye mucha más información y explicaciones gráficas que te ayudarán a comprender mejor qué es lo que estamos haciendo. Así que no lo dudes, y échale un ojo.

Vídeo de este tutorial: https://youtu.be/xWKHxTHvzTI


Dicho todo esto, ¡Vamos al lío!


Lo primero que necesitamos es que nuestro personaje pueda moverse. Si aún no tienes esto puedes ver un vídeo aquí, o visitar la publicación donde explico cómo hacerlo aquí. Una vez que lo tengas estamos listos para empezar.

Lo más importante a la hora de crear un videojuego, es tener un orden dentro de nuestro sistema de archivos. Esto nos ayudará a encontrar los distintos elementos que queramos meter al juego, y a tener un proyecto limpio y ordenado. 

Esta organización depende del creador, pero yo te recomiendo tener mínimo 3 carpetas diferenciadas:

  • Scenes: carpeta donde guardaremos todas las escenas que creemos.
  • Scripts: carpeta donde vamos a guardar todas los scripts para nuestros elementos dentro del juego.
  • Elements: carpeta donde guardaremos todos nuestros elementos (texturas, audio...)

Una vez que tengas estas carpetas creadas puedes añadir subcarpetas a las  mismas, pero eso ya depende de cómo te quieras organizar. Como mínimo te recomiendo estas 3.

Para añadir carpetas en Godot es tan simple como irnos al sistema de archivos del entorno, darle a click derecho, y crear una nueva carpeta.

Una vez que las tengas creadas debería quedarte algo similar a esto:

Después, meteremos los distintos elementos que tenemos fuera de las carpetas dentro de estas. Por ejemplo, "icon.png" lo meteré en la carpeta "Elements", el script "player.gd" lo meteré en "Scripts" y la escena llamada "Node2D.tscn", en "Scenes"

Como puedes ver en la imagen de arriba, hay un archivo llamado "defalut_env.tres" , este archivo déjalo ahí para evitar problemas. Una vez que tengas todo ordenado a tu gusto podemos empezar con la cámara.

El primer paso es crear un nodo llamado "Camera2D". Para añadirlo simplemente le damos a "añadir nodo" y seleccionamos "Camera2D".

Cuando lo hayamos creado veremos que se nos ha puesto como nodo hijo de Node2D (en caso de que no sea así ponlo como hijo suyo.) Podremos ver dentro del propio entorno que se nos ha creado un cuadrado azul en mitad de la pantalla. Este es el viewport correspondiente a la cámara y es básicamente lo que vamos a ver (ya que la cámara lo está "enfocando"). Todo lo que esté dentro de este viewport lo podremos ver al ejecutar el juego (si no sabes lo que es el viewport mira el vídeo de este mismo tutorial que te lo explico).

El problema ahora es que esta cámara no es la principal de la escena (solo puede haber 1 por escena al mismo tiempo). Para poder hacer que sea la principal y que no nos coja el otro viewport por defecto (el otro recuadro azul de la imagen), vamos a irnos al "Inspector" y habilitar la opción de "Current". Esto hará que la cámara sea la principal dentro de la escena.

Puedes comprobar si esto ha funcionado ejecutando el juego y viendo que nuestro personaje no está en el centro si no en la esquina de abajo.

Después, tendremos que hacer que nuestra cámara se mueva. Como queremos que siga a nuestro personaje, basta con hacer que el nodo "Camera2D" (al que os recomiendo renombrar el nombre que queráis, por ejemplo "main_camera") sea hijo de "Player". 

Gracias a como funcionan los nodos padres e hijos a la hora de moverse, cuando el nodo padre, que en este caso es "Player" se mueva, todos los nodos que hayamos puesto como hijos suyos dentro de la jerarquía de nodos, se moverán con él. Aprovecharemos esto para hacer que la cámara acompañe allá donde vaya a nuestro "Player". Así que es lo que haremos, cogeremos el nodo "Camera2D" en la jerarquía y le diremos que sea hijo de "Player".

Una vez hecho esto nuestra cámara ya seguirá a nuestro jugador, pero para evitar que nos pase lo de antes, tenemos que centrarla en el centro de nuestro "Player". Para ello, seleccionaremos la cámara, le daremos a la "W" y moveremos la cámara al centro de nuestro personaje.

Si ejecutamos el juego nuestro personaje ya se podrá mover y la cámara le seguirá. El problema es que como no tenemos nada de referencia para ver qué está en movimiento parecerá que está parado. 

En mi caso he añadido un cubo negro que he creado con otro programa y lo he añadido dentro de la escena. Así al jugar, puedo ver que mi personaje se está moviendo pero ese cubo no. Por supuesto vosotros podéis subir lo que queráis: un mapa ya hecho, un enemigo, un cofre, etc... 

Si has ejecutado el juego verás que tu personaje no tiene ninguna colisión con este nuevo objeto llamado "Cubo". Para hacer esto te recomiendo que te veas este vídeo donde trato este tema mucho más en profundidad, también puedes ver la versión escrita aquí.


¡Bien! Pues esto es todo por ahora.

Si tienes cualquier tipo de duda no dudes en ponerme un comentario aquí debajo o en el propio vídeo, e intentaré contestarte lo más rápido posible.

¡Nos vemos!

El vídeo de este tutorial: 

https://youtu.be/xWKHxTHvzTI


Mi canal de YouTube:

https://www.youtube.com/channel/UCAwrHOXBtRvfw034z7BjIhw 

© 2020 Heavy Lab. Todos los derechos reservados.
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar
Utilizamos cookies para permitir un correcto funcionamiento y seguro en nuestra página web, y para ofrecer la mejor experiencia posible al usuario.

Configuración avanzada

Puedes personalizar tus preferencias de cookies aquí. Habilita o deshabilita las siguientes categorías y guarda tu selección.