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
| Wert | Effekt |
|---|---|
1.0 | Standardansicht |
>1 | Heranzoomen |
<1 | Herauszoomen |
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.