Sistema de colisiones

El sistema de colisiones detecta cuando la nave del jugador entra en contacto con un asteroide. Utiliza rectángulos escalados para crear "hitboxes" más precisas y evitar colisiones "injustas".

codeImplementación

func _comprobar_colision():
  # Comprobamos si el rect del jugador intersecta con algún asteroide
  var jugador_escalado = _escalar_rect(jugador)
  for asteroide in asteroides:
    var asteroide_escalado = _escalar_rect(asteroide)
    if jugador_escalado.intersects(asteroide_escalado):
      _game_over()

func _escalar_rect(r: Rect2):
  # Hacemos la "hitbox" más pequeña que el sprite
  return r.grow((FACTOR_HITBOX - 1.0) * r.size.x / 2)

radarProceso de detección

transform
Escalado
Reduce rectángulos para hitbox precisa
compare_arrows
Comparación
Verifica intersección entre rectángulos
error
Game Over
Activa fin del juego si hay colisión
crop_free
Uso de Rect2.intersects() para detectar superposición de áreas
loop
Iteración sobre todos los asteroides para comprobar colisiones individuales

tuneParámetros de configuración

aspect_ratio
FACTOR_HITBOX = 0.75 - Factor de reducción para las cajas de colisión
fit_screen
La función _escalar_rect() aplica un margen negativo con grow()
calculate
Cálculo del margen: (FACTOR_HITBOX - 1.0) * r.size.x / 2
priority_high
Las hitboxes más pequeñas que los sprites mejoran la experiencia del jugador
speed
Sistema eficiente que solo requiere comparaciones geométricas simples