vrp-gruppe-sechs/quad-splash/cube_spawner.gd

41 lines
1.1 KiB
GDScript

extends Node3D
@export var spawn_area_size := Vector2(20, 20) # Breite x Tiefe
@export var spawn_height := 15.0
@export var cube_count := 1200
@export var spawn_duration := 3.0 # Sekunden für alle Würfel
@export var cube_scene: PackedScene
var spawned_cubes: Array[RigidBody3D] = []
func _ready():
# Warte kurz, dann starte den Würfelregen
await get_tree().create_timer(1.0).timeout
spawn_cubes()
func spawn_cubes():
var spawn_interval = spawn_duration / cube_count
for i in range(cube_count):
spawn_single_cube()
await get_tree().create_timer(spawn_interval).timeout
func spawn_single_cube():
if not cube_scene:
push_error("Cube Scene nicht zugewiesen!")
return
var cube = cube_scene.instantiate() as RigidBody3D
add_child(cube)
# Zufällige Position über dem Spielfeld
var random_x = randf_range(-spawn_area_size.x / 2, spawn_area_size.x / 2)
var random_z = randf_range(-spawn_area_size.y / 2, spawn_area_size.y / 2)
cube.global_position = global_position + Vector3(random_x, spawn_height, random_z)
# Zufällige Rotation
cube.rotation = Vector3(randf() * PI, randf() * PI, randf() * PI)
spawned_cubes.append(cube)