Files
tgcc-artest/Scripts/fuoco_d'artificio_root.gd
Matteo Sonaglioni f7b334b21c first commit
2026-03-10 23:54:57 +01:00

48 lines
1.9 KiB
GDScript

extends Node3D
# Funzione chiamata dal treno per iniettare il colore scelto
func imposta_colore(colore_target: Color) -> void:
# Cerchiamo i 3 nodi specifici per nome
# Assicurati che i nomi nella tua scena siano ESATTAMENTE questi!
var razzo = $"1_RazzoIniziale"
var esplosione = $"2_EsplosionePrincipale"
var scie = $"3_ScieCadenti"
# 1. Il Razzo iniziale lo vogliamo BIANCO BRILLANTE (la "testa")
# Usiamo un bianco "sovraccarico" (valori > 1) per farlo brillare di più
_colora_nodo_particellare(razzo, Color(1.5, 1.5, 1.5))
# 2. L'esplosione principale la vogliamo BIANCA (i punti centrali dello scoppio)
_colora_nodo_particellare(esplosione, Color(1.2, 1.2, 1.2))
# 3. Le scie che cadono le vogliamo del COLORE SCELTO dal treno
_colora_nodo_particellare(scie, colore_target)
# Funzione helper per duplicare e colorare il materiale in modo sicuro
func _colora_nodo_particellare(nodo: GPUParticles3D, colore_da_applicare: Color) -> void:
if nodo and nodo.draw_pass_1:
var mesh = nodo.draw_pass_1 as QuadMesh
if mesh and mesh.material:
# --- IL SEGRETO E' QUI! ---
# Duplichiamo il materiale. Ora questo nodo ha una sua copia privata
# e non influenzerà gli altri fuochi d'artificio.
var mat_unico = mesh.material.duplicate() as StandardMaterial3D
# Impostiamo il colore e ci assicuriamo che brilli
mat_unico.albedo_color = colore_da_applicare
mat_unico.blend_mode = BaseMaterial3D.BLEND_MODE_ADD # Fondamentale per l'effetto luce
mat_unico.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
# Assegniamo il nuovo materiale unico alla mesh
mesh.material = mat_unico
# Funzione per far partire l'effetto
func accendi() -> void:
var razzo = $"1_RazzoIniziale"
if razzo:
razzo.emitting = true # Accende solo la miccia iniziale
# Tempo di vita totale aumentato per dare tempo alle scie di cadere
await get_tree().create_timer(6.0).timeout
queue_free()