Files
CatTank/scripts/spawner.gd

37 lines
1012 B
GDScript

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