Saltar al contenido

Hora del código #25

Estaba jugando este genial juego llamado Lunar Rescue y me puse a pensar cómo copiarlo de forma básica a Godot. La parte nueva que no había tratado en Godot es la gravedad. Muy interesante eso del motor de la física. La gravedad la uso con el vehículo del jugador, el lander, mediante un RigidBody2D en modo Character para simular su descenso y ascenso. Todos los otros objetos en pantalla se mueven con KinematicBody2d.

El juego se divide en dos etapas generales y se controla con las flechas. En la etapa de descenso el lander debe esquivar los meteoros para llegar a la plataforma:

  • Flecha abajo hace que parta el lander.
  • Flecha izquierda y derecha controla movimiento hacia los lados.
  • Flecha arriba hace que el lander suba un poco y depende de la cantidad de combustible disponible. Gasta 5 puntos por cada pulsación de la tecla.

Luego de aterrizar un astronauta llegará a la plataforma para abordar el lander y luego el mismo despegará con cierto impulso que le permitirá escapar la gravedad. Lo que en realidad ocurre es que revierto la gravedad y la coloco en un vector hacia arriba. En ésta etapa el lander debe esquivar las naves y disparos enemigos con el objetivo de llegar al área inferior de la nave nodriza para atracar:

  • Flecha izquierda y derecha controla movimiento hacia los lados.
  • Flecha arriba dispara el arma láser.

Un experimento muy interesante y me alegró saber que la mayoría del código que he implementado en otros experimentos como el del prototipo de top down shooter me servía muy bien en este. Lo único que realmente hace falta es que las naves enemigas no disparen de forma aleatoria sino que lo hagan cuando tengan en la mira al lander o que dispare a un punto que pueda predecir de su ruta. Una cosa estética sería hacer la pantalla vertical para que haya más espacio como en el original o reducir de tamaño los objetos. Dejo adjunto el código para el juego.

Código fuente y archivos

https://www.youtube.com/watch?v=wZnoCXMrZCg