Diseñando tu primer juego: un pong sencillo

¡Hola, futuros creadores de videojuegos! ¿Estás listo para dar tus primeros pasos en el mundo del desarrollo de juegos con Godot? Empecemos con un clásico: ¡un sencillo juego de Pong!En este artículo te guiaremos paso a paso para que puedas diseñar tu propia versión de Pong y aprendas los fundamentos de Godot. Aprenderás a planificar el juego, mover los paddles y la bola, y contabilizar las puntuaciones. ¡No esperes más y comencemos esta divertida aventura juntos!

Diseñando tu primer juego: un pong sencillo

Planificación del juego y diseño de escenas

Antes de empezar a programar, es importante planificar y diseñar las escenas.En el caso del Pong, necesitaremos una escena principal donde tendrá lugar la acción y otra escena para mostrar el resultado final.

Para crear la escena principal, empezaremos creando un nuevo proyecto en Godot y seleccionando la opción "2D". A continuación, crearemos un nuevo nodo de tipo "Scene" y le daremos el nombre "Pong". En esta escena, necesitaremos los siguientes nodos:

Una vez que tengamos la escena principal, crearemos una segunda escena para mostrar el resultado final. Esta escena puede ser muy sencilla, con un fondo y un texto que muestre el resultado del juego. También podemos añadir botones para volver al menú principal o reiniciar el juego. Podemos crear el texto como un nodo "Label" y los botones como nodos "Button".

Movimiento de los paddles y la bola

¡Es hora de dar vida a nuestro Pong!En esta sección, vamos a aprender a programar el movimiento de los paddles y su objetivo.

Para empezar, necesitamos crear dos scripts diferentes: uno para los paddles y otro para el segundo elemento. El movimiento de los paddles será sencillo: cuando el jugador presione las teclas correspondientes, el paddle se moverá hacia arriba o hacia abajo. Podemos usar la función move\_and\_slide() de Godot para mover los paddles. En el script del paddle, definiremos una variable para almacenar la velocidad de movimiento y otra para detectar si se está presionando la tecla de arriba o de abajo.

El movimiento de la bola será un poco más complejo.Al iniciar el juego, comenzará a moverse en una dirección aleatoria. Cuando la bola choque con un paddle, cambiará su dirección.Además, cuando choque con los bordes de la pantalla, también cambiará su dirección. Podemos usar la función move\_and\_slide() junto con la función bounce() de Godot para mover la bola y hacerla rebotar cuando choque con los paddles o los bordes de la pantalla. También necesitaremos detectar las colisiones con los paddles y los bordes de la pantalla.

A continuación, te mostramos un ejemplo de cómo podría ser el script del paddle:

extends KinematicBody2D

# Velocidad de movimiento del paddle
export (int) var speed = 200

# Función para mover el paddle hacia arriba
func move_up():
    velocity.y -= speed

# Función para mover el paddle hacia abajo
func move_down():
    velocity.y += speed

Y aquí tienes un ejemplo del script:

extends KinematicBody2D

# Velocidad de movimiento de la bola
export (int) var speed = 200

# Dirección de movimiento de la bola
var direction = Vector2.Función para mover la bola
func move():
    Mover la bola en la dirección especificada
    move_and_slide(direction * speed)

    Comprobar si la bola ha chocado con un borde de la pantalla
    if is_on_wall():
        Cambiar la dirección de la bola
        direction = -direction

    Comprobar si la bola ha chocado con un paddle
    for body in get_slide_collision_objects():
        if body.is_in_group("paddle"):
            # Calcular el nuevo ángulo de rebote
            var angle = body.rotation_degrees + 90
            direction.x = cos(deg2rad(angle))
            direction.y = sin(deg2rad(angle))
            break

Contabilizar puntuaciones y reiniciar el juego

¡Vamos a añadir puntuaciones y la opción de reiniciar a nuestro Pong! Primero, necesitamos crear dos variables para almacenar las puntuaciones de cada jugador. Estas variables pueden ser de tipo int y se pueden llamar, por ejemplo, "player1\_score" y "player2\_score". Inicialmente, ambas variables deben estar establecidas en 0.

A continuación, crearemos una función para actualizar las puntuaciones cada vez que la bola rebote en un paddle.Esta función debe incrementar en 1 el marcador del jugador correspondiente y reposicionar el objeto en el centro de la pantalla con una nueva trayectoria aleatoria. Por ejemplo, si la bola rebota en el paddle del jugador 1, aumentaremos la variable "player1\_score" en 1.

Por último, crearemos una función para reiniciar cuando uno de los participantes alcance un cierto puntaje, por ejemplo, 10.Esta función debe reiniciar las puntuaciones de ambos jugadores a 0 y volver a colocarla en el centro de la pantalla con una nueva dirección aleatoria. También podemos mostrar un mensaje de felicitaciones al ganador.