pyxen.Camera

Une Camera définit ce que le moteur de rendu voit dans le monde.

Elle est attachée à une entité en tant que composant. Le moteur de rendu utilise le transform et les propriétés de la caméra pour calculer les matrices de vue et de projection.

Un monde doit contenir au moins une caméra pour afficher quoi que ce soit.


Créer une Camera

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

Ou ajoutée plus tard :

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

La Camera utilise le Transform de l’entité

Une caméra ne stocke pas sa propre position — elle utilise le transform de l’entité :

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

Déplacer l’entité déplace la vue. Les transforms parents affectent également la caméra.


Propriétés

zoom

camera.camera.zoom = 1.0

Type : float Défaut : 1.0

ValeurEffet
1.0Vue par défaut
>1Zoom avant
<1Zoom arrière

Exemple :

camera.camera.zoom = 2.0  # zoom in
camera.camera.zoom = 0.5  # zoom out

Le zoom n’affecte que la matrice de projection, pas le transform de l’entité.


Exemple : Suivre un joueur

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

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

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

Ou plus simplement, définir le parent de la caméra comme étant le joueur :

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

Caméra avec zoom arrière :

camera.camera.zoom = 0.75

Caméras multiples

Si plusieurs caméras existent, la première caméra active trouvée dans le monde est utilisée.