This is the version 5bb8b4b308367b37baaa5ac0 from 2013-09-30 22:37:51 comment: 'Neue Version'
Kamera mit Scripten programmieren ed
Der Variablen-Typ für eine Kamera ist Camera (bzw. camera = 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:
void main()
// Blick-Winkel festlegen
Cam.ang = vector(0.4, 0, 0) // leicht nach unten gekippt
// die Kamera dem Spieler folgen lassen
void OnIterate()
// Blickrichtung durch Maus-Bewegung ändern
Cam.ang.y += MouseD.x * 0.03
// in einigem Abstand hinter der Figur
Cam.pos = Ego.pos - Cam.ang.ang2dir() * 1000.0Kamerafahrt ed
Im Editor können Kamerafahrten bearbeitet werden. Im Spiel werden sie per Camera.StartScript gestartet bzw. mit Camera.StopScript vorzeitig beendet.
Beispiel:
void main()
Cam.StartScript("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, v_0, rect(0, 1, 0.5, 1), true)
// 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.texture_out = NixCreateDynamicTexture(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.texture_outBeispiel (komplizierter):
void main()
// Kamera in Textur umleiten
Cam.show = false
Cam.texture_out = NixCreateDynamicTexture(512, 512)
// zusätzliche "Kamera" für die Nachbearbeitung durch Effekte
camera v = new Camera(v_0, v_0, r_id, true)
v.texture_in = Cam.texture_out
v.shader = LoadShader("netter_shader")
// könnte man auch noch durch eine weitere "Kamera" schicken.... Blue, // blau
"test" ) // eigentlicher Text
// ein Modell
matrix mat
MatrixRotation(mat, vector(0.5, 1.1, 0))
picture3d p3d = CreatePicture3D( LoadModel("irgend_ein_model"), // ein Modell
mat, // die Drehung
0.1) // Bildschirm-Tiefe
// Gruppierung abschliessen
CurrentGrouping = nil
float t = 0
while true
// Text-Anzeige fuer die Lebenspunkte verwenden
txt.Str = "Lebenspunkte: " + f2s(ego.Life, 1)
// die komplette Gruppe blinken lassen
t += elapsed * 2
group.Color.a = 0.7 + 0.3 * sin(t)
wait_of()