41 lines
1.1 KiB
GDScript
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)
|