extends Area3D class_name HealthComponent @export var max_health : float = 100 @onready var current_health : float = max_health @export var signal_name : String signal start_dying func damage(value: float): if current_health > 0: current_health -= value if signal_name: HudSignalBus.emit_signal(signal_name, current_health, max_health) if current_health <= 0: start_dying.emit() func _on_area_entered(area: Area3D) -> void: if area is HealthPickup: current_health = current_health + area.value current_health = clamp(current_health, 0, max_health) HudSignalBus.emit_signal(signal_name, current_health, max_health) area.queue_free()