Dando vida a la pelota
Clase 10 de 17 • Curso Introductorio de Desarrollo de Videojuegos con Godot
Resumen
¿Cómo construir una pelota controlable en Godot?
Crear una dinámica de movimiento para tus personajes y objetos es esencial para desarrollar un juego interactivo y atractivo. En este tutorial, te guiaré sobre cómo darle vida a una pelota en Godot usando un Kinematic Body 2D. A través de estos pasos, podrás controlar y dirigir la pelota en tu juego.
¿Qué son los nodos Kinematic Body 2D?
Los nodos de tipo Kinematic Body 2D te permiten tener un control total sobre los objetos, ya que no se ven afectados por físicas externas como fuerzas o choques. Esto es especialmente útil para objetos que requieren un control preciso, como nuestra pelota en este ejemplo.
- ¿Por qué usar Kinematic Body?
- Control absoluto sin influencia de físicas externas.
- Permite dirigir la pelota según se desee.
- Evita variaciones inesperadas por el entorno.
¿Cómo crear la escena y añadir sprites e imágenes?
Vamos a crear desde cero la escena de la pelota, comenzando por darle una representación visual y configurando las colisiones.
-
Crear la escena:
- Inicia un nuevo nodo desde
Kinematic Body 2D
y nómbraloBall
.
- Inicia un nuevo nodo desde
-
Añadir imagen a la pelota:
- Importa una imagen en formato PNG, preferentemente una pelota, al sistema de archivos.
- Usa un nodo
Sprite
para visualizarla y arrastra la imagen a la propiedadTextura
dentro del sprite.
-
Configurar colisiones:
- Utiliza un nodo
Collision Shape 2D
con unCircleShape2D
. - Configura el radio del círculo a la mitad del tamaño de tu imagen (si la imagen mide 64x64 píxeles, el radio sería de 32).
- Utiliza un nodo
¿Cómo programar la lógica de movimiento?
Un script adecuado controlará el comportamiento y la reacción de la pelota al entorno:
# Definiendo variables iniciales
var speed = 0
var direction = Vector2.ZERO
var isMoving = false
func _ready():
randomize() # Inicializa el generador de números aleatorios
speed = 600 # Establecer la velocidad inicial
direction.x = [-1, 1][randi() % 2] # Dirección horizontal aleatoria
direction.y = [-0.8, 0.8][randi() % 2] # Dirección diagonal inicial
isMoving = true
func _physics_process(delta):
if isMoving:
var collide = move_and_collide(direction * speed * delta)
if collide:
direction = direction.bounce(collide.normal) # Rebota al colisionar
¿Cómo implementar el sistema de colisiones?
La función move_and_collide
maneja las interacciones con los objetos colisionantes. En caso de colisión, se usa el método bounce()
para reflejar la dirección de la pelota:
- Colisiones:
- Detecta colisiones y cambia la dirección usando
collide.normal
. - Las colisiones se reflejan creando rebotes realistas.
- Detecta colisiones y cambia la dirección usando
Una vez ejecutado el código, deberás ver cómo la pelota se mueve y rebota correctamente, interactuando dinámicamente con los elementos del juego. Aunque puede que encuentres ciertos bugs, como un "piso flotante", esto es parte del proceso de aprendizaje y desarrollo en el mundo de la programación de juegos. ¡Sigue explorando y mejorando! Próximamente, desarrollaremos el oponente para completar la experiencia de juego. ¡No te lo pierdas!