Segnali e Gruppi
Segnali (Observer Pattern)
I segnali permettono a un nodo di “gridare” che è successo qualcosa senza sapere chi sta ascoltando. È il modo principale per gestire eventi: click di pulsanti, collisioni, timer scaduti.
Definire ed Emettere
```gdscript
Player.gd
signal health_changed(new_value) signal died
func take_damage(amount): health -= amount health_changed.emit(health) # Emette il segnale
if health <= 0:
died.emit()
```
Collegare (Connect)
Puoi collegare i segnali via Editor (tab Node) o via codice.
```gdscript
HUD.gd
func _ready(): # Collega il segnale ‘health_changed’ del player alla funzione ‘_on_health_changed’ var player = get_node(“…/Player”) player.health_changed.connect(_on_health_changed)
func _on_health_changed(new_health): $ProgressBar.value = new_health ```
Gruppi
I gruppi sono “etichette” che puoi applicare ai nodi.
Esempio: Aggiungi tutti i nemici al gruppo “enemies”.
```gdscript
Bullet.gd
func _on_body_entered(body): if body.is_in_group(“enemies”): body.take_damage(10) queue_free() ```
Puoi anche chiamare una funzione su tutti i nodi di un gruppo:
```gdscript get_tree().call_group(“enemies”, “alert”, player.position) ```