Random Collision Spawn Area

Godot Version

Latest

QUESTION:

How do I make it so that it spawns the enemy inside the collision box randomly, and on any amount of collision boxes underneath the parent node, Currently it just spawns on one collision node, I dunno how to reference it and how I can allow for multiple areas, im a beginner

extends Node2D

# VARIABLES
@onready var rectangle_spawn :Node = $SpawnArea/CollisionShape2D
@onready var border := $Border
@onready var Animation_2 = border.animation_player2

## PLAYER/CHARACTER VARIABLE

@onready var target := $Player
@onready var player := $Player
@onready var stopper := 0.0
var enemyduplicator := preload("res://Scenes/enemy_2d.tscn")

## KILLS COUNTER

var counter := 0





## STARTING FORMAT OF THE SEEK/BORDER
func _ready():
	Global.Enemy_Die.connect(on_enemy_die)
	Animation_2.seek(0.0)
	Animation_2.play("BorderMovement")
	
	spawn_enemy()




## NEEDS TO DETECT IF ENEMY IS KILLED, THUS SEEK PREVIOUS 2 SECONDS
func _process(_delta):
	$Control/Label.text = ("Kills : " + str(counter))	



func spawn_enemy() -> void:
	var half_size :Vector2 = rectangle_spawn.scale * 0.5
	var enemy := enemyduplicator.instantiate() as Node2D
	get_tree().current_scene.add_child(enemy)
	
	var side = randi_range(1, 4)
	var random_point := Vector2.ZERO

	match side:
		1: #Left
			random_point = Vector2(-half_size.x, randf_range(-half_size.y, half_size.y))
		2: #Up
			random_point = Vector2(randf_range(-half_size.x, half_size.x), -half_size.y)
		3: #Right
			random_point = Vector2(half_size.x, randf_range(-half_size.y, half_size.y))
		4: #Down
			random_point = Vector2(randf_range(-half_size.x, half_size.x), half_size.y)
	enemy.global_position = rectangle_spawn.to_global(random_point)


## DUPLICATION OF ENEMIES


func on_enemy_die():
	Animation_2.seek(clamp(Animation_2.current_animation_position - 1, 0, Animation_2.current_animation_length))
	print("clicked")
	$EnemySpawner.wait_time -= 0.25
	counter += 1

func _on_enemy_spawner_timeout():
	spawn_enemy()