From 75c83f4d7a628077d9ec98bfbd674699bfa20529 Mon Sep 17 00:00:00 2001 From: Sophia Pearson Date: Wed, 20 May 2026 09:39:22 +0200 Subject: initial gdscript rewrite --- components/meteor_spawner.gd | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 components/meteor_spawner.gd (limited to 'components/meteor_spawner.gd') diff --git a/components/meteor_spawner.gd b/components/meteor_spawner.gd new file mode 100644 index 0000000..fbdb097 --- /dev/null +++ b/components/meteor_spawner.gd @@ -0,0 +1,36 @@ +class_name MeteorSpawner +extends Path2D + +## Whether meteors spawned by this spawner ignore gravity or not. +@export var ignore_gravity: bool = false + +@export_group("Spawning") + +## The duration of time, in seconds, that has to pass between consecutive spawn attempts. +@export_range(0.0, 120, 0.1, "suffix:s") var cooldown: float = 5.0: + get: + return cooldown + set(value): + $CooldownTimer.wait_time = value + cooldown = value + +## The likelihood of actually spawning a meteor once the cooldown has elapsed. +@export_range(0.0, 1.0) var probability: float = 0.5 + +const _meteor_scene = preload("res://components/meteor.tscn") + +func _ready() -> void: + assert(curve.point_count == 2) + $SpawnPoint.progress_ratio = 0 + $CooldownTimer.wait_time = cooldown + $CooldownTimer.start() + +func _try_to_spawn() -> void: + if(randf() > probability): + return + + $SpawnPoint.progress_ratio = randf() + var meteor = _meteor_scene.instantiate() + add_child(meteor) + + meteor.position = $SpawnPoint.position -- cgit v1.2.3