1.0 Einführung 

2.0 Die Anfänge

3.0 Der Hauptscript

4.0 Move-Script

5.0 Kamera

6.0DorfbewohnerKI

7.0 Erste Waffen

8.0 Panels

9.0 Der erste Quest

10.0 Partikel

11.0 Menü

12.0 Abschließung

13.0 Downloads

14.0 Codesammlung

15.0 Frei Belegbare

Steuerung

5.0Kamera

 

Der Begriff Kamera ist ein sehr großer und wichtiger Begriff! Er wird dann verwendet wenn sie zum Beispiel der Kamera hinter den Spieler setzen wollen oder die Kamera nach einer Explosion wackeln soll und und und! Daher bekommt er hier auch ein eigenes Kapitel wo ich sehr viel über diesen Begriff erklären werde!

5.1Grundbegriffe

Hier werde ich erst einmal alle Begriffe von Kamera klären; Als erstes sind die Ortskoardinaten und die Winkel dran!

5.1.1Ortskoardinaten:

camera.X; ist die X Position der Kamera! camera.y; Ist die Y Position der Kamera! camera.z; ist die Z Position der Kamera! Eigentlich ganz einfach nur man muss beachten das wenn man camera.z etc verwendet um sie dauerhaft an einen z.b. Spieler festzuhalten dann muss man sie in einen While-Schleife ( Eine While-Schleife ist dazu da etwas dauerhaft zu wiederholen! Wenn die While-Schleife etwas nicht immer wiederholen soll dann einfach statt while(1) {...}  ; while (wann soll es dauerhaft wiederholt werden??) {...} verwenden! ) setzen! Wenn sie das nicht machen wird die Kamera einfach am Anfang des Spieles an der Position des Objektes sein wo sie die Kamera hingesetzt haben! Danach wird sie sich aber nicht den Objekt wieder ausrichten wenn das sich bewegt hat! Diese Art ist ganz nützlich wenn Sie z.B wollen, dass die Kamera an einen festen Platz ist! (Silent Hill 2; Grimfandango etc.)  Dann einfach ein Objekt in dahin setzten wo die Kamera hin soll und es so schreiben: camera.X=objekt.X; camera.Y=objekt.Y; camera.Z=objekt.Z;   So ist die Kamera an einen festen Punkt und verändert sich nicht!

5.1.2 Winkel

Es gibt 3 Winkel der Kamera: camera.tilt; ist der Neigungswinkel, camera.pan; ist der Drehwinkel und camera.roll ist der Rollwinkel! Die folgende Zeichnung sollte ihnen das verdeutlichen:

 

 

4.1.3 Sonstige Befehle

C= Camera.arc ist der Winkel des Blickfelds (Default=60; ) Also wenn man Camera.arc verringert erhält man einen Zoom Effekt! Bei erhöhen kann es über 70 zu einen Froschaugeneffekt kommen! ---- Wertebereiche von 0-100

Camera.Fog = Camera.Fog sagt einfach nur darüber aus wieviel Nebel im Bereich der Kamera ist! ( Default=0; ) (Damit diese Variable funktionier muss noch Fog_color gesetzt sein! Wertebereiche von 1-4! Man kann Die Fog-color in den Map-Properties einstellen!)

Camera.Genius = Camera.Genius sagt einfach aus welchen Pointer die Kamera zugeordnet ist! Wenn die Kamera in die Grenzen von diesem Entity kommt wird dieses Unsichtbar! (Also in ein bsp:  Camera.Genius=PlayerNun ist der Spieler innerhalb der Kamera unsichtbar! ----- Wertebereich=Alle Pointers

 

4.2 Verschiedene Kamerapositionen

Wir wollen 4 Kameraperspektiven machen: 

  • Eine normale 3rd Person Ansicht (Default Ansicht! )
  • Eine Ego Ansicht!
  • Eine Vogelperspektive! 

Als erstes fangen wir mit der einfachsten an und zwar die Ego Perspektive! In dieser Perspektive muss einfach nur die Kamera immer auf den Spieler gesetzt werden!

Function bewege_camera_ego
{
while(1) //WICHTIG!!!!
{
camera.x = player.X; //Setze X Position der Kamera auf den Spieler!
camera.y = player.Y;// Setze Y Position der Kamera auf den Spieler
camera.z = player.Z+20; /*Player.Z ist nicht der Kopf des Spielers sondern ein bisschen niedriger! Deshalb erhöhen wir die Position noch ein bisschen!*/
camera.pan = player.pan; /* Pan und Tilt Werte der Kamera entsprechen den des Spielers! */
camera.tilt = player.tilt; 
camera.roll = 0; // Der Roll Wert da wir den nie verändern werden!
camera.arc = 45; // Blickfeld ist minimal unter normal!
camera.genius = player; //Genius (Siehe oben) ist der Spieler!
wait(1);  
}
}

Nun das sollte jeder verstanden haben! Nun kommen wir zu der Vogelperspektive:

Function bewege_camera_Vogel()
{
while(1) //WICHTIG!!!!
{
camera.x = player.x; /* Hier noch überall das gleich wie oben! */
camera.y = player.y;
camera.z = player.z+300; // die Z position der Kamera wird sehr erhöht! 
camera.pan = player.pan;
camera.tilt = -90; //Die Kamera schaut nach unten!
camera.roll = 0;
camera.arc = 45; 
camera.genius = player; /*eigentlich unnotwendig da die Kamera nie den Spieler treffen wird! Trotzdem als Sicherheit! */
wait(1); 
}
}

Da das hier ja eigentlich das gleiche ist soll nicht weiter darauf eingegangen werden! 

Nun machen wir die 3rd Person Perspektive!

var camera_number=1;

function bewege_camera()
{
while(player==null) { wait(1); }
while(1)
{
if(camera_number==1) //wenn camera_number 1 ist
{
camera.x = player.x; //Setze X Position der Kamera auf den Spieler!
camera.y = player.y;// Setze Y Position der Kamera auf den Spieler
camera.z = player.z+20; /*Player.Z ist nicht der Kopf des Spielers sondern ein bisschen niedriger! Deshalb erhöhen wir die Position noch ein bisschen!*/
camera.pan = player.pan; /* Pan und Tilt Werte der Kamera entsprechen den des Spielers! */
camera.genius = player;
wait(1);
}
if(camera_number==2) //wenn 2
{
camera.x = player.x; /* Hier noch überall das gleich wie oben! */
camera.y = player.y;
camera.z = player.z+300; // die Z position der Kamera wird sehr erhöht! 
camera.pan = player.pan;
camera.tilt = -90; //Die Kamera schaut nach unten!
camera.genius = player; /*eigentlich unnotwendig da die Kamera nie den Spieler treffen wird! Trotzdem als Sicherheit! */
wait(1);
}
if(camera_number==3)
{
camera.x = player.x + cos(player.pan) * (-(100+abs(1*0.01)));
camera.y = player.y + sin(player.pan) * (-(100+abs(1*0.01)));
camera.z = player.z + 70;
camera.tilt = -20; 
}
camera.pan = player.pan;
wait(1);
}
}

function count_up_camera()
{
bewege_camera();
camera_number+=1;
if(camera_number>3) { camera_number = 1; }
}
on_r=count_up_camera; 

Ich hab hier eigentlich nur die 3 Codes zusammengefasst in einen Funktion geschrieben und verbinde sie mit if sätzen! Dazu habe ich eine Variable intialisiert die Zwischen den Kameranummern unterscheidet! Dann habe ich noch eine Funktion geschrieben die die Kamera Nummer erhöht wenn R gedrückt ist! (ON_R=count_up_camera; //führe die Funktion aus wenn R gedrückt ist!  ) Wenn nun aber die Kamera Nummer größer als 3 ist soll er sie wieder auf 1 verringern damit nicht plötzlich Kamera-Nummer 4 ist!!(Wir haben nur den Kamera-Nummern von 1-3 Funktionen zugewiesen!)

 

                                                                      Seite(5/20) zurück  weiter