Kamera mit Scripten programmieren ed
Der Variablen-Typ für eine Kamera ist Camera.
Jede Welt erschafft automatisch eine Standart-Kamera, die als cam angesprochen werden kann.
Mit new Camera können zusätzliche erschaffen werden.
Table of Contents
Bewegung ed
Beispiel:
class MyCamera extends Camera
vector vang
void __init__()
# Blick-Winkel festlegen
vang = vector(0.4, 0, 0) # leicht nach unten gekippt
# die Kamera dem Spieler folgen lassen
override void on_iterate(float dt)
# Blickrichtung durch Maus-Bewegung ändern
vang.y += dmouse.x * 2.0
ang = quaternion.rotation_v(vang)
# in einigem Abstand hinter der Figur
pos = pos - (ang * e_z) * 1000.0
Kamerafahrt ed
Im Editor können Kamerafahrten bearbeitet werden. Im Spiel werden sie per Camera.start gestartet bzw. mit Camera.stop vorzeitig beendet.
Beispiel:
void main()
cam.start("meine_kamerafahrt", v_0)
Split-Screen ed
Beispiel:
void main()
# bisherige Kamera auf obere Bildschirm-Hälfte einschränken
cam.dest = rect(0, 1, 0, 0.5)
# zusätzliche Kamera
Camera *cam2 = new Camera(v_0, quaternion.ID, rect(0, 1, 0.5, 1))
# von hier an beide Kameras verwenden (Positionen setzen...)
In Textur rendern ed
Beispiel:
void main()
# eine weitere Kamera erschaffen, die nur in eine Textur rendert
Camera *c = new Camera(v_0, v_0, rect.ID, false)
c.output = new DynamicTexture(512, 512)
# Modell eines Objektes finden
Model *m = GetObjectByName("Objekt-für-Test")
# Textur der Kamera auf das Modell legen
m.material[0].texture[0] = c.output
Beispiel (komplizierter):
void main()
# Kamera in Textur umleiten
cam.show = false
cam.output = new DynamicTexture(512, 512)
# zusätzliche 'Kamera' für die Nachbearbeitung durch Effekte
Camera *v = new Camera(v_0, v_0, rect.ID, true)
v.input = cam.output
v.shader = LoadShader("netter-shader")
# könnte man auch noch durch eine weitere `Kamera` schicken....