extends Node @export var enemy_scene: PackedScene @export var min_spawn_time: float = 1.0 @export var max_spawn_time: float = 7.0 func _ready(): start_spawn_timer() func start_spawn_timer(): var time = randf_range(min_spawn_time, max_spawn_time) await get_tree().create_timer(time).timeout spawn_enemy() start_spawn_timer() func spawn_enemy(): if not enemy_scene: return var enemy = enemy_scene.instantiate() get_parent().add_child(enemy) # Calculate random position outside the screen var viewport_rect = get_viewport().get_visible_rect() var camera = get_viewport().get_camera_2d() var center = Vector2.ZERO if camera: center = camera.get_screen_center_position() # Adjust rect size for zoom viewport_rect.size /= camera.zoom # Pick a random angle and a distance slightly larger than half the diagonal var angle = randf() * TAU var distance = viewport_rect.size.length() / 2.0 + 100.0 # +100 buffer enemy.global_position = center + Vector2.RIGHT.rotated(angle) * distance