extends CharacterBody3D @export var speed: float @export_range(0,1,1,"or_less","or_greater","radians_as_degrees") var rotation_speed: float @export var death_delay: float @export_group("Node References") @export var model: Node3D @export var death_sound: AudioStreamPlayer3D func _ready() -> void: velocity = global_basis.z * speed rotation = Vector3.ZERO func _physics_process(delta: float) -> void: model.global_rotation.y = wrapf(Time.get_ticks_msec() * 0.001 * rotation_speed, 0.0, TAU) var col = move_and_collide(velocity * delta) if col: if col.get_collider() is Player: queue_free() velocity = velocity.bounce(col.get_normal()) func _on_player_detector_body_entered(body: Node3D) -> void: if body is Player: model.visible = false death_sound.play() var tween = create_tween() tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) tween.tween_callback(queue_free).set_delay(death_delay)