35 lines
947 B
GDScript
35 lines
947 B
GDScript
extends Node
|
|
|
|
@export var ammo_scene: PackedScene = preload("res://scenes/ammo_pickup.tscn")
|
|
@export var spawn_interval_min: float = 5.0
|
|
@export var spawn_interval_max: float = 15.0
|
|
@export var spawn_radius: float = 300.0
|
|
|
|
func _ready():
|
|
spawn_loop()
|
|
|
|
func spawn_loop():
|
|
var wait_time = randf_range(spawn_interval_min, spawn_interval_max)
|
|
await get_tree().create_timer(wait_time).timeout
|
|
spawn_ammo()
|
|
spawn_loop()
|
|
|
|
func spawn_ammo():
|
|
var player = get_tree().get_first_node_in_group("player")
|
|
if not player:
|
|
return
|
|
|
|
var pickup = ammo_scene.instantiate()
|
|
|
|
# Randomize type
|
|
pickup.ammo_type = randi() % 2 # 0 or 1
|
|
pickup.amount = 10 if pickup.ammo_type == 0 else 5 # More AP than HE
|
|
|
|
# Random position around player
|
|
var angle = randf() * TAU
|
|
var distance = randf_range(100.0, spawn_radius)
|
|
var pos = player.global_position + Vector2.RIGHT.rotated(angle) * distance
|
|
|
|
pickup.global_position = pos
|
|
get_parent().add_child(pickup)
|