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()