Interpolaciones

Las interpolaciones nos permiten lograr movimientos de los actores de manera sencilla.

Por ejemplo, tradicionalmente si quisiéramos cambiar posición de un actor en pantalla podemos usar estas sentencias:

actor.x = 10
actor.x = 20
actor.x = 30
etc ...

una forma de lograr lo mismo con pilas es asignarle todos los valores en forma de lista:

actor.x = range(10, 100, 10)

o lo que es lo mismo:

actor.x = [10, 20, 30, 40, 50 ... etc.

Y a estas interpolaciones, también le puedes decir cuantos segundos puede demorar. Por ejemplo, para dar un giro completo de 360 grados en 10 segundos puedes hacer algo como:

actor.rotacion = [360], 10

de hecho, puede que te resulte mas conveniente tener mas control sobre la interpolación, así que puedes usar esta forma:

pilas.utils.interpolar(actor, 'x', 100)

donde el valor inicial será la posición x del actor y el valor final será 100.

La función interpolar, como mencioné antes, te da mas control sobre la interpolación, porque admite otros parámetros de ajuste como los siguientes:

Por ejemplo, si queremos que un personaje dé un giro completo de 360 grados en 10 segundos podemos hacer algo así:

actor.rotacion = 0
pilas.utils.interpolar(actor, 'rotacion', 360, duracion=10)

Girando un actor

Esta herramienta se puede aplicar a muchas situaciones distintas, por ejemplo si queremos hacer girar un personaje podemos hacer algo como:

actor.rotacion = 0
pilas.utils.interpolar(actor, 'rotacion', 360, duracion=5)

con lo que estaríamos diciendo al personaje que dé un giro completo (de 0 a 360 grados) en 5 segundos.

También existe un argumento delay para demorar el inicio de la interpolación.

Escalando un actor

De manera similar a lo que hicimos anteriormente, podemos aplicarla a la propiedad escala una nueva interpolación:

pilas.utils.interpolar(actor, 'escala', 2, duracion=5)

esto duplicará el tamaño del actor en 5 segundos.

¿Y mas simple?, bueno, como hicimos antes:

actor.escala = [2]

Interpolaciones en cadena

Si queremos que una interpolación pase por distintos valores podemos hacer algo como esto:

actor.x = [300, 0, 300], 3

lo que llevará al actor de su posición x actual, a 300, luego a 0 y por último de nuevo a 300 en un segundo.

En total, ha consumido 3 segundos por cada movimiento, es decir 9 segundos en total.