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.

Bewegung ed

Beispiel:

class MyCamera : Camera

    vector vang

    void __init__()
        // Blick-Winkel festlegen
        vang = vector(0.4, 0, 0) // leicht nach unten gekippt

    // die Kamera dem Spieler folgen lassen
    overwrite void onIterate()

        // Blickrichtung durch Maus-Bewegung ändern
        vang.y += MouseD.x * 0.03
        QuaternionRotationV(ang, 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
    Cam2 = new Camera(v_0, q_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, r_id, false)
    c.output = new DynamicTexture(512, 512)

    // Modell eines Objektes finden
    Model *m = GetObjectByName("Objekt_fuer_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, r_id, true)
    v.input = Cam.output
    v.shader = LoadShader("netter_shader")

    // könnte man auch noch durch eine weitere "Kamera" schicken....