Godot 2D. Movimiento del jugador

Enviado por tech4life el

Uno de los puntos más importantes en nuestros juegos es el movimiento de nuestro jugador. En este caso vamos a explicar una manera sencilla y fácil de generar movimiento en un juego en 2D. Vamos a explicar la mecánica que hemos utilizado en nuestro último juego, en el que pilotamos una nave espacial y debemos esquivar meteoritos. Nosotros decidimos que el jugador solo podía moverse a derecha e izquierda, lo cual simplifica un poco todo el proceso aunque es un buen punto de partida para otro tipo de juegos.

Crear controles

Nuestro juego esta pensado para ser jugado en moviles y tabletas, por lo que los controles que decimidos hacer fueron con unos botones en pantalla. 

Como veis creamos dos botones, de tipo TouchScreenButton. A cada uno de ellos les vinculamos dos signals, uno cuando el boton se apreta y otro cuando se suelta. 

Lógica de los controles

En cada una de estas 4 funciones que creamos añadimos el siguiente código:

Para centralizar el movimiento en una sola función, llamamos a nuestra función "move", pasandole un 0 cuando hemos soltado el botón y no queremos movimiento, y luego indicandole al apretar un botón si queremos ir a la derecha (1) o a la izquierda (-1).

Nuestra función "move" lo unico que hace es marcar el movimiento en una variable Global que podremos usar en cualquier otra escena, en nuestro caso, el movimiento del jugador lo gestionará el propio script de la escena del jugador.

Movimiento del jugador

Pues vamos a ver la mágia del movimiento en el script del jugador : 

Como véis el código es muy sencillo. En la función _physics_process, llamamos a un función que generará el movimiento. Para mover el jugador en este caso, solo con modificar la variable position ya es suficient. Como os hemos comentado, nosotros solo modificaremos la coordenada x de la posición, ya que solo moveremos de izquierda a derecha.

Para ello delegamos el movimiento a una nueva función que calculará la nueva posición en base a una variable speed que nos indica cuanto nos desplazaremos, y esta función mirará si hemos llegado al final de la pantalla, y en caso afirmativo, pondrá como posición final la de la pantalla, si no nuestro jugador saldria de escena y eso es algo que no queremos.

Variables necesarias

Y estas son las variables para el jugador, con las posiciones de inicio y fin de pantalla y la velocidad: 

Como véis es una manera muy sencilla de generar movimiento para un juego en 2D.

 

Nivel