Manejo de Cámara
En ocasiones queremos que el escenario de nuestro juego sea muy extenso, un bosque, una ciudad repleta de objetos etc...
Nuestros juegos con pilas no están limitados
a lo que podemos ver en la ventana, el espacio
del escenario puede ser tan grande como queramos. Aquí
es donde la cámara
toma protagonismo.
El objeto cámara
nos permite desplazar el punto
de vista en cualquier parte del escenario, dado que nos
brinda dos coordenadas: x
e y
, para que le
indiquemos qué parte del escenario tenemos que observar.
Las coordenadas de la cámara
Inicialmente la cámara estará mostrando el punto (0, 0)
del escenario, el punto central de la ventana.
Si queremos que muestre otra parte del escenario podemos ejecutar una sentencia como la que sigue:
pilas.camara.x = [200]
pilas.camara.y = [200]
Con esto le estaríamos diciendo a la cámara que nos
muestre el punto (200, 200)
del escenario. Así
observaríamos que podemos explorar la parte superior
derecha del escenario de forma gradual.
Objetos sensibles a la cámara
Hay casos en donde queremos que los actores no se desplacen junto con el escenario, es decir, puede ocurrir que necesitemos que un actor permanezca fijo en su posición de pantalla aunque la cámara cambie de lugar.
Este es el caso de los contadores de vidas, los textos que vé un usuario o cualquier marcador auxiliar.
Para que un actor no se vea afectado por la cámara, tienes
que guardar el valor True
dentro del atributo fijo
:
actor.fijo = True
Por lo general, todos los actores tienen este atributo a False
, porque
viven en el escenario de juego y no se quedan fijos a la pantalla. Excepto
los textos que siempre permanecen en la parte superior de la ventana.
Movimientos de cámara
Para darle acción a los juegos se puede aplicar un movimiento de cámara, o vibración. Por ejemplo al momento de perder una vida o cuando ocurre una explosión.
El método para realizar un movimiento es camara.vibrar
y admite dos
argumentos, uno de intensidad y otro de duración o tiempo.
Aquí hay dos ejemplos de invocación:
pilas.camara.vibrar()
pilas.camara.vibrar(intensidad=2, tiempo=3)