La función colisiones_disparos_asteroides() detecta y gestiona las colisiones entre los disparos del jugador y los asteroides, eliminando ambos elementos y reproduciendo efectos de sonido.
-
gps_fixed
Detección de colisiones
Comprueba intersección entre rectángulos de disparos y asteroides
-
delete_sweep
Eliminación de elementos
Remueve tanto el disparo como el asteroide al colisionar
-
volume_up
Feedback audiovisual
Reproduce sonido de destrucción y efectos visuales
lightbulb
Puntos clave
check_circle
Iteración anidada para comprobar todas las combinaciones
check_circle
Eliminación segura para evitar errores de iteración
check_circle
Reproducción inmediata de efectos de sonido
Sistema de colisiones
whatshot
func colisiones_disparos_asteroides():
# Iterar sobre todos los disparos
for d in disparos.size() - 1:
var disparo = disparos[d]
var rect_disparo = Rect2(disparo.pos, disparo.tam)
# Iterar sobre todos los asteroides
for a in asteroides.size() - 1:
var asteroide = asteroides[a]
var rect_asteroide = Rect2(asteroide.pos, asteroide.tam)
# Comprobar colisión
if rect_disparo.intersects(rect_asteroide):
# Eliminar disparo
disparos.remove_at(d)
# Eliminar asteroide
asteroides.remove_at(a)
# Reproducir sonido de destrucción
reproducir("destruccion")
# Salir del bucle para evitar errores
break
# Iterar sobre todos los disparos
for d in disparos.size() - 1:
var disparo = disparos[d]
var rect_disparo = Rect2(disparo.pos, disparo.tam)
# Iterar sobre todos los asteroides
for a in asteroides.size() - 1:
var asteroide = asteroides[a]
var rect_asteroide = Rect2(asteroide.pos, asteroide.tam)
# Comprobar colisión
if rect_disparo.intersects(rect_asteroide):
# Eliminar disparo
disparos.remove_at(d)
# Eliminar asteroide
asteroides.remove_at(a)
# Reproducir sonido de destrucción
reproducir("destruccion")
# Salir del bucle para evitar errores
break
gps_fixed
arrow_forward
Detectar colisión
delete_sweep
arrow_forward
Eliminar elementos
volume_up
Reproducir efectos
rocket