pyxen.Camera

Una Camera define lo que el renderizador ve en el mundo.

Se adjunta a una entidad como componente. El renderizador usa la transformación y las propiedades de la cámara para calcular las matrices de vista y proyección.

Un mundo debe contener al menos una cámara para renderizar algo.


Crear una Camera

camera = world.spawn(
    x=0,
    y=0,
    camera=Camera()
)

O añadirla después:

camera = world.spawn()
camera.camera = Camera()

La Camera usa la transformación de la entidad

Una cámara no almacena posición por sí misma — usa la transformación de la entidad:

camera.x = 100
camera.y = 50
camera.rotation = 30
camera.scale = (2, 2)

Mover la entidad mueve la vista. Las transformaciones del padre también afectan a la cámara.


Propiedades

zoom

camera.camera.zoom = 1.0

Tipo: float Por defecto: 1.0

ValorEfecto
1.0Vista por defecto
>1Acercar
<1Alejar

Ejemplo:

camera.camera.zoom = 2.0  # acercar
camera.camera.zoom = 0.5  # alejar

El zoom afecta solo a la matriz de proyección, no a la transformación de la entidad.


Ejemplo: seguir a un jugador

player = world.spawn(x=0, y=0, sprite=hero)

camera = world.spawn(camera=Camera())

def update():
    camera.x = player.x
    camera.y = player.y

O más simple, establecer el padre de la cámara como el jugador:

player = world.spawn(x=0, y=0, sprite=hero)
camera = world.spawn(camera=Camera(), parent=player)

Cámara alejada:

camera.camera.zoom = 0.75

Múltiples cámaras

Si existen múltiples cámaras, se usa la primera cámara activa encontrada en el mundo.