extends Node @export_group("Gestione Palette") @export var materiale_da_cambiare: ShaderMaterial # Trascina qui il tuo materiale dall'Inspector @export var tempo_transizione: float = 2.0 # Quanto dura la sfumatura (in secondi) @export var valore_riga_2: float = 0.2 # Il valore target della seconda riga var palette_spostata: bool = false var tween_palette: Tween func _input(event: InputEvent) -> void: # Usiamo il tasto P (Palette) per innescare l'effetto if event is InputEventKey and event.pressed and not event.echo: if event.keycode == KEY_P: _cambia_palette_fluida() func _cambia_palette_fluida() -> void: if materiale_da_cambiare == null: print("ERRORE: Non hai assegnato il materiale nell'Inspector!") return # Invertiamo lo stato palette_spostata = !palette_spostata # Decidiamo dove deve arrivare lo slider var target_shift = valore_riga_2 if palette_spostata else 0.0 # Se c'è già un'animazione in corso (es. hai premuto due volte velocemente), la fermiamo if tween_palette and tween_palette.is_valid(): tween_palette.kill() # Creiamo la nuova animazione fluida tween_palette = create_tween() # Usiamo SINE e IN_OUT per renderla morbidissima in partenza e in arrivo tween_palette.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT) # Anima il parametro dello shader tween_palette.tween_property( materiale_da_cambiare, "shader_parameter/palette_shift_y", # Sintassi magica per parlare con lo shader target_shift, tempo_transizione ) if palette_spostata: print("Transizione verso la Palette 2 iniziata...") else: print("Ritorno alla Palette 1 originale...")