pyxen.Camera

Eine Camera definiert, was der Renderer in der Welt sieht.

Sie wird als Komponente an ein Entity angehängt. Der Renderer nutzt die Transform- und Kameraeigenschaften, um die Ansichts- und Projektionsmatrizen zu berechnen.

Eine Welt muss mindestens eine Kamera enthalten, um etwas zu rendern.


Kamera erstellen

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

Oder nachträglich hinzufügen:

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

Die Kamera nutzt den Entity-Transform

Eine Kamera speichert keine eigene Position — sie nutzt den Transform des Entity:

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

Das Bewegen des Entity bewegt die Ansicht. Eltern-Transforms beeinflussen die Kamera ebenfalls.


Eigenschaften

zoom

camera.camera.zoom = 1.0

Typ: float Standard: 1.0

WertEffekt
1.0Standardansicht
>1Heranzoomen
<1Herauszoomen

Beispiel:

camera.camera.zoom = 2.0  # heranzoomen
camera.camera.zoom = 0.5  # herauszoomen

Zoom beeinflusst nur die Projektionsmatrix, nicht den Entity-Transform.


Beispiel: Einem Spieler folgen

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

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

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

Oder einfacher — die Kamera als Kind des Spielers setzen:

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

Herausgezoomte Kamera:

camera.camera.zoom = 0.75

Mehrere Kameras

Wenn mehrere Kameras existieren, wird die erste aktive Kamera in der Welt verwendet.