extends RigidBody3D @onready var collision_shape = $CollisionShape3D @onready var audio_drop = $DropSound @onready var level_control = get_tree().get_current_scene() var rng = RandomNumberGenerator.new() var random_rotation = true var particle_number var player_velocity var despawning = false # Called when the node enters the scene tree for the first time. func _ready(): #enter the scene and assign particle number level_control.particle_number += 1 particle_number = level_control.particle_number if random_rotation == true: var lv_x = rng.randf_range(5.0,7.0) var lv_y = rng.randf_range(0.0,3.0) var lv_z = rng.randf_range(0.0,2.0) var av_x = rng.randf_range(-50.0,50.0) var av_y = rng.randf_range(-50.0,50.0) var av_z = rng.randf_range(-50.0,50.0) linear_velocity += transform.basis * Vector3(lv_x, lv_y, lv_z) + player_velocity angular_velocity += transform.basis * Vector3(av_x,av_y,av_z) func _process(delta): #once max particles reached delete from scene if level_control != null: #replace this check when level reload works properly if level_control.particle_number >= (particle_number + level_control.MAX_PARTICLES): _on_timer_timeout() if despawning: linear_velocity.y -= .1 * delta func _on_timer_timeout(): collision_shape.disabled = true gravity_scale = 0 despawning = true await get_tree().create_timer(2).timeout queue_free() func _on_body_shape_entered(body_rid, body, body_shape_index, local_shape_index): if body.get_collision_layer() == 1: audio_drop.play()