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:
actor.x = pilas.interpolar(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:
- duracion: los segundos que durara la interpolacion.
- demora: los segundos que tiene que esperar antes de iniciar la interpolacion.
- tipo: tipo de interpolaciones, que generalmente es ‘lineal’.
Por ejemplo, si queremos que un personaje dé un giro completo de 360 grados en 10 segundos podemos hacer algo así:
actor.rotacion = 0
actor.rotacion = pilas.interpolar(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
actor.rotacion = pilas.interpolar(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:
actor.escala = pilas.interpolar(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 = pilas.interpolar([300, 0, 300], duracion=3)
lo que llevará al actor de su posición x actual, a 300 en un segundo, y luego a 0 en un segundo y por último de nuevo a 300 en un segundo.
En total, ha consumido 3 segundos en pasar por todos los valores que le indicamos.