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
Toutes les propriétés numériques (numbers, vector3, vector4 et quaternions) et les constantes de shader peuvent être animées avec le système d’animation intégré, à l’aide de la fonction go.animate(). Le moteur calcule automatiquement les valeurs intermédiaires des propriétés selon les modes de lecture et les fonctions d’interpolation indiqués. Vous pouvez également spécifier des fonctions d’interpolation personnalisées.

Pour animer une propriété d’un objet de jeu (game object) ou d’un composant (component), utilisez la fonction go.animate(). Pour les propriétés des nœuds d’interface graphique, la fonction correspondante est 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)
Pour arrêter toutes les animations d’une propriété donnée, appelez go.cancel_animations(), ou, pour les nœuds d’interface graphique, gui.cancel_animations() :
-- Stop euler z rotation animation on the current game object
go.cancel_animations(".", "euler.z")
Si vous annulez l’animation d’une propriété composite, comme position, toutes les animations de ses sous-composantes (position.x, position.y et position.z) seront également annulées.
Le manuel des propriétés présente toutes les propriétés disponibles pour les objets de jeu, les composants et les nœuds d’interface graphique.
Presque toutes les propriétés des nœuds d’interface graphique peuvent être animées. Vous pouvez, par exemple, rendre un nœud invisible en réglant sa propriété color sur une transparence totale, puis le faire apparaître progressivement en animant sa couleur vers le blanc (c’est-à-dire sans teinte).
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)
Les fonctions d’animation de propriétés go.animate() et gui.animate() acceptent une fonction de rappel Lua (callback) facultative comme dernier argument. Cette fonction est appelée lorsque l’animation est arrivée à son terme. Elle n’est jamais appelée pour les animations en boucle, ni lorsqu’une animation est annulée manuellement au moyen de go.cancel_animations() ou de gui.cancel_animations(). La fonction de rappel peut servir à déclencher des événements à la fin d’une animation ou à enchaîner plusieurs animations.
La fonction d’interpolation définit la manière dont la valeur animée évolue au fil du temps. Les images ci-dessous décrivent les fonctions appliquées au cours du temps pour réaliser cette interpolation.
Les valeurs d’interpolation suivantes sont valides pour 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 |
Les valeurs d’interpolation suivantes sont valides pour 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 |

Vous pouvez créer des courbes d’interpolation personnalisées en définissant un vector contenant un ensemble de valeurs, puis en fournissant ce vecteur à la place de l’une des constantes d’interpolation prédéfinies ci-dessus. Les valeurs du vecteur décrivent une courbe allant de la valeur de départ (0) à la valeur cible (1). Le moteur d’exécution échantillonne les valeurs du vecteur et effectue une interpolation linéaire pour calculer les valeurs entre les points définis dans le vecteur.
Par exemple, le vecteur :
local values = { 0, 0.4, 0.2, 0.2, 0.5, 1 }
local my_easing = vmath.vector(values)
produit la courbe suivante :

Dans l’exemple suivant, la position y d’un objet de jeu passe brusquement de la position actuelle à 200, et inversement, selon une courbe en créneaux :
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)
