extends Node3D @export_category("Parameters") @export var obj_scale: float = 0.2 @export var launch_magnitude: float = 5 @export var obj_interval = 0.5 @export var obj_range = 0.2 @export_category("Mesh") @export var mesh_type: Mesh = BoxMesh.new() @export var mesh_color: Color = Color("FFFFFF") @export var mesh_texture: Texture2D @export var triplanar: bool = true @export var world_triplanar: bool = false #@onready var debris_sounds: AudioStreamPlayer3D = $DebrisSounds #@onready var fade_out_time = $DebrisSounds.stream.get_length() - 0.05 #@onready var default_volume = debris_sounds.volume_db var shape_match = {"SphereMesh": SphereShape3D.new(), "BoxMesh": BoxShape3D.new(),"CapsuleMesh": CapsuleShape3D.new(), "TextMesh": BoxShape3D.new()} func _physics_process(_delta: float) -> void: ##Play the debris sound and tween it so it fades out #debris_sounds.volume_db = default_volume #var tween = create_tween() ##Object, Property, Target Volume (between -60 and -80 in silent), Time #tween.tween_property(debris_sounds, "volume_db", -60, fade_out_time) #debris_sounds.play() ##Make the debris var rigid_debris = RigidBody3D.new() ##Make it so player is not impeded by debris but debris is moved around by player self.add_child(rigid_debris) rigid_debris.add_to_group("mess") rigid_debris.continuous_cd = true ##Set by bit values (ex. just layer 1 (0 or 1), just layer 2 (2), layer 1 and 2 (3), just layer 4 (4) rigid_debris.collision_layer = 2 rigid_debris.collision_mask = 1 rigid_debris.add_child(MeshInstance3D.new()) rigid_debris.get_child(0).mesh = mesh_type rigid_debris.add_child(CollisionShape3D.new()) rigid_debris.get_child(1).shape = shape_match[str(mesh_type.get_class())] rigid_debris.get_child(0).mesh.material = StandardMaterial3D.new() rigid_debris.get_child(0).mesh.material.albedo_color = mesh_color if mesh_texture != null: rigid_debris.get_child(0).mesh.material.albedo_texture = mesh_texture rigid_debris.get_child(0).mesh.material.uv1_triplanar = triplanar rigid_debris.get_child(0).mesh.material.uv1_world_triplanar = world_triplanar rigid_debris.get_child(0).mesh.material.texture_filter = 0 for children in rigid_debris.get_children(): children.scale = Vector3(obj_scale,obj_scale,obj_scale) var velocity = Vector3(randf_range(-1 * obj_range,obj_range), 0, randf_range(-1 * obj_range,obj_range)) * launch_magnitude var ang_velocity = Vector3(randf_range(-1 * obj_range,obj_range), 0, randf_range(-1 * obj_range,obj_range)) * (launch_magnitude / 2) ##Direction rigid_debris.linear_velocity = velocity ##Spin rigid_debris.angular_velocity = ang_velocity set_physics_process(false) await(get_tree().create_timer(obj_interval, false).timeout) set_physics_process(true)