Función crear_asteroides()

La función crear_asteroides() genera asteroides en posiciones aleatorias fuera de la pantalla, que luego se moverán hacia el jugador. La frecuencia de aparición aumenta con la dificultad.

  • add_circle

    Generación controlada

    Crea asteroides según la frecuencia actual del juego

  • shuffle

    Posición aleatoria

    Aparecen en los bordes superior o laterales

  • speed

    Velocidad variable

    Velocidad basada en el nivel de dificultad

lightbulb Puntos clave
check_circle
Se ejecuta periódicamente según la dificultad
check_circle
Cada asteroide es un diccionario independiente
check_circle
Dirección hacia el jugador con variación aleatoria
Generación de asteroides
blur_circular
func crear_asteroides():
  # Obtener dimensiones de pantalla
  var pantalla = get_viewport().get_visible_rect().size

  # Crear nuevo asteroide
  var asteroide = {}

  # Determinar borde de aparición (0=arriba, 1=derecha, 2=abajo, 3=izquierda)
  var borde = randi() % 4

  match borde:
    0: # Arriba
      asteroide.pos = Vector2(randf() * pantalla.x, -TAM_ASTEROIDE)
    1: # Derecha
      asteroide.pos = Vector2(pantalla.x, randf() * pantalla.y)
    2: # Abajo
      asteroide.pos = Vector2(randf() * pantalla.x, pantalla.y)
    3: # Izquierda
      asteroide.pos = Vector2(-TAM_ASTEROIDE, randf() * pantalla.y)

  # Calcular dirección hacia el jugador con variación
  var dir_jugador = (jugador.pos - asteroide.pos).normalized()
  var angulo_variacion = (randf() - 0.5) * PI/4 # ±22.5°
  asteroide.dir = dir_jugador.rotated(angulo_variacion)

  # Establecer velocidad según dificultad
  asteroide.vel = velocidad_asteroides

  # Tamaño y rotación
  asteroide.tam = Vector2(TAM_ASTEROIDE, TAM_ASTEROIDE)
  asteroide.rot = 0
  asteroide.vel_rot = (randf() - 0.5) * 2

  # Añadir al array
  asteroides.append(asteroide)
place Posición
Vector2(borde_x, borde_y)
explore Dirección
hacia jugador + variación
speed Velocidad
velocidad_asteroides
rotate_right Rotación
vel_rot aleatoria