Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Animazione delle proprietà

Tutte le proprietà numeriche (numbers, vector3, vector4 e quaternioni) e le costanti degli shader possono essere animate con il sistema di animazione integrato, usando la funzione go.animate(). Il motore interpola automaticamente le proprietà in base alle modalità di riproduzione e alle funzioni di interpolazione (easing) specificate. Puoi anche specificare funzioni di interpolazione personalizzate.

Animazione delle proprietà Rimbalzo in ciclo

Animazione delle proprietà

Per animare una proprietà di un oggetto di gioco (game object) o di un componente, usa la funzione go.animate(). Per le proprietà dei nodi GUI, la funzione corrispondente è gui.animate().

-- Set the position property y component to 200
go.set(".", "position.y", 200)
-- Then animate it
go.animate(".", "position.y", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_OUTBOUNCE, 2)

Per interrompere tutte le animazioni di una determinata proprietà, chiama go.cancel_animations() oppure, per i nodi GUI, gui.cancel_animations():

-- Stop euler z rotation animation on the current game object
go.cancel_animations(".", "euler.z")

Se annulli l’animazione di una proprietà composta, come position, vengono annullate anche tutte le animazioni delle sue singole componenti (position.x, position.y e position.z).

Il manuale delle proprietà elenca tutte le proprietà disponibili per oggetti di gioco, componenti e nodi GUI.

Animazione delle proprietà dei nodi GUI

Puoi animare quasi tutte le proprietà dei nodi GUI. Per esempio, puoi rendere un nodo invisibile impostando la sua proprietà color su una trasparenza completa, per poi farlo apparire gradualmente animando il colore fino al bianco (cioè senza alcuna tinta).

local node = gui.get_node("button")
local color = gui.get_color(node)
-- Animate the color to white
gui.animate(node, gui.PROP_COLOR, vmath.vector4(1, 1, 1, 1), gui.EASING_INOUTQUAD, 0.5)
-- Animate the outline red color component
gui.animate(node, "outline.x", 1, gui.EASING_INOUTQUAD, 0.5)
-- And move to x position 100
gui.animate(node, hash("position.x"), 100, gui.EASING_INOUTQUAD, 0.5)

Callback di completamento

Le funzioni di animazione delle proprietà go.animate() e gui.animate() supportano una funzione di callback Lua facoltativa come ultimo argomento. Questa funzione viene chiamata quando l’animazione giunge al termine. La funzione non viene mai chiamata per le animazioni cicliche, né quando un’animazione viene annullata manualmente tramite go.cancel_animations() o gui.cancel_animations(). Puoi usare la callback per attivare eventi al completamento dell’animazione o per concatenare più animazioni.

Interpolazione

L’interpolazione definisce come cambia nel tempo il valore animato. Le immagini qui sotto mostrano le funzioni applicate nel tempo per ottenere l’interpolazione.

I seguenti valori sono validi per l’interpolazione con go.animate():

go.EASING_LINEAR  
go.EASING_INBACK go.EASING_OUTBACK
go.EASING_INOUTBACK go.EASING_OUTINBACK
go.EASING_INBOUNCE go.EASING_OUTBOUNCE
go.EASING_INOUTBOUNCE go.EASING_OUTINBOUNCE
go.EASING_INELASTIC go.EASING_OUTELASTIC
go.EASING_INOUTELASTIC go.EASING_OUTINELASTIC
go.EASING_INSINE go.EASING_OUTSINE
go.EASING_INOUTSINE go.EASING_OUTINSINE
go.EASING_INEXPO go.EASING_OUTEXPO
go.EASING_INOUTEXPO go.EASING_OUTINEXPO
go.EASING_INCIRC go.EASING_OUTCIRC
go.EASING_INOUTCIRC go.EASING_OUTINCIRC
go.EASING_INQUAD go.EASING_OUTQUAD
go.EASING_INOUTQUAD go.EASING_OUTINQUAD
go.EASING_INCUBIC go.EASING_OUTCUBIC
go.EASING_INOUTCUBIC go.EASING_OUTINCUBIC
go.EASING_INQUART go.EASING_OUTQUART
go.EASING_INOUTQUART go.EASING_OUTINQUART
go.EASING_INQUINT go.EASING_OUTQUINT
go.EASING_INOUTQUINT go.EASING_OUTINQUINT

I seguenti valori sono validi per l’interpolazione con gui.animate():

gui.EASING_LINEAR  
gui.EASING_INBACK gui.EASING_OUTBACK
gui.EASING_INOUTBACK gui.EASING_OUTINBACK
gui.EASING_INBOUNCE gui.EASING_OUTBOUNCE
gui.EASING_INOUTBOUNCE gui.EASING_OUTINBOUNCE
gui.EASING_INELASTIC gui.EASING_OUTELASTIC
gui.EASING_INOUTELASTIC gui.EASING_OUTINELASTIC
gui.EASING_INSINE gui.EASING_OUTSINE
gui.EASING_INOUTSINE gui.EASING_OUTINSINE
gui.EASING_INEXPO gui.EASING_OUTEXPO
gui.EASING_INOUTEXPO gui.EASING_OUTINEXPO
gui.EASING_INCIRC gui.EASING_OUTCIRC
gui.EASING_INOUTCIRC gui.EASING_OUTINCIRC
gui.EASING_INQUAD gui.EASING_OUTQUAD
gui.EASING_INOUTQUAD gui.EASING_OUTINQUAD
gui.EASING_INCUBIC gui.EASING_OUTCUBIC
gui.EASING_INOUTCUBIC gui.EASING_OUTINCUBIC
gui.EASING_INQUART gui.EASING_OUTQUART
gui.EASING_INOUTQUART gui.EASING_OUTINQUART
gui.EASING_INQUINT gui.EASING_OUTQUINT
gui.EASING_INOUTQUINT gui.EASING_OUTINQUINT

Interpolazione lineare Curva con arretramento in ingresso Curva con arretramento in uscita Curva con arretramento in ingresso e in uscita Curva con arretramento in uscita e in ingresso Rimbalzo in ingresso Rimbalzo in uscita Rimbalzo in ingresso e in uscita Rimbalzo in uscita e in ingresso Curva elastica in ingresso Curva elastica in uscita Curva elastica in ingresso e in uscita Curva elastica in uscita e in ingresso Curva sinusoidale in ingresso Curva sinusoidale in uscita Curva sinusoidale in ingresso e in uscita Curva sinusoidale in uscita e in ingresso Curva esponenziale in ingresso Curva esponenziale in uscita Curva esponenziale in ingresso e in uscita Curva esponenziale in uscita e in ingresso Curva circolare in ingresso Curva circolare in uscita Curva circolare in ingresso e in uscita Curva circolare in uscita e in ingresso Curva quadratica in ingresso Curva quadratica in uscita Curva quadratica in ingresso e in uscita Curva quadratica in uscita e in ingresso Curva cubica in ingresso Curva cubica in uscita Curva cubica in ingresso e in uscita Curva cubica in uscita e in ingresso Curva di quarto grado in ingresso Curva di quarto grado in uscita Curva di quarto grado in ingresso e in uscita Curva di quarto grado in uscita e in ingresso Curva di quinto grado in ingresso Curva di quinto grado in uscita Curva di quinto grado in ingresso e in uscita Curva di quinto grado in uscita e in ingresso

Interpolazione personalizzata

Puoi creare curve di interpolazione personalizzate definendo un vector con un insieme di valori e passando poi il vettore al posto di una delle costanti di interpolazione predefinite elencate sopra. I valori del vettore descrivono una curva dal valore iniziale (0) al valore di destinazione (1). Il runtime campiona i valori del vettore e usa un’interpolazione lineare per calcolare i valori intermedi tra i punti definiti nel vettore.

Per esempio, il vettore:

local values = { 0, 0.4, 0.2, 0.2, 0.5, 1 }
local my_easing = vmath.vector(values)

produce la seguente curva:

Curva personalizzata

Nell’esempio seguente, la posizione y di un oggetto di gioco passa bruscamente dalla posizione corrente a 200 e viceversa, seguendo una curva a onda quadra:

local values = { 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1 }
local square_easing = vmath.vector(values)
go.animate("go", "position.y", go.PLAYBACK_LOOP_PINGPONG, 200, square_easing, 2.0)

Curva a onda quadra