This is the version 5bb8b4b308367b37baaa5ac4 from 2011-09-16 23:37:53 comment: 'neue Kaba-Dokumentation'
Kamera mit Scripten programmieren ed
Der Variablen-Typ für eine Kamera ist view.
Jede Welt erschafft automatisch eine Standart-Kamera, die als Cam angesprochen werden kann.
Mit CreateView 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
while(true)
// Blickrichtung durch Maus-Bewegung aendern
Cam.Ang.y += MouseD.x * 0.03
// in einigem Abstand hinter der Figur
Cam.Pos = ego.Pos - VecAng2Dir( Cam.Ang ) * 1000.0
wait_of()Kamerafahrt ed
Im Editor können Kamerafahrten bearbeitet werden. Im Spiel werden sie per view.StartScript gestartet bzw. mit view.StopScript vorzeitig beendet.
Beispiel:
void main()
Cam.StartScript( "meine_kamerafahrt", v0 )Split-Screen ed
Beispiel:
void main()
// bisherige Kamera auf obere Bildschirm-Haelfte einschraenken
Cam.Dest = rect( 0, 1, 0, 0.5 )
// zusaetzliche Kamera
view Cam2
Cam2 = CreateView( v0, v0, 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
view v = CreateView( v0, v0, NULL, false )
v.OutputTexture = NixCreateDynamicTexture( 512, 512 )
// Modell eines Objektes finden
model m = GetObject( "Objekt_fuer_Test" )
// Textur der Kamera auf das Modell legen
m.Material[0].Texture[0] = view.OutputTextureBeispiel (komplizierter):
void main()
// Kamera in Textur umleiten
Cam.Show = false
Cam.OutputTexture = NixCreateDynamicTexture( 512, 512 )
// zusaetzliche "Kamera" fuer die Nachbearbeitung durch Effekte
view v = CreateView( v0, v0, NULL, true )
v.InputTexture = Cam.OutputTexture
v.ShaderFile = LoadShaderFile( "netter_shader" )
// koennte 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()