11.12.2012 Aufrufe

3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051

3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051

3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

esprechen. In diesem hier werden wir uns mit einer einfachen festen Kamera begnügen. Legen<br />

Sie nun eine WDL-Datei an und nennen sie"camera.wdl". Sie beinhaltet die Steuerung der Kamera.<br />

Beginnen wir mit den Variablen für die Kamera die man benötigt.<br />

var camera_pan = 0; // Winkel der Kamera<br />

var camera_dist = 250; // Abstand zum Player<br />

var camera_z_pos = 800; // Höhe der Kamera<br />

Damit hätten wir schon alle Variablen die wir für die "camera.wdl" benötigen. Was auch noch sehr<br />

hilfreich ist, wäre die Definition aller Funktionen die im dazugehörigen Skript vorkommen. Ich<br />

bevorzuge dies immer, um zu vermeiden das eine Funktion aufgerufen wird, die vorher noch nicht<br />

deklariert worden ist und gehe so einer Engine Fehlermeldung, die daraufhin bestimmt kommen<br />

wird aus dem Weg. Demzufolge schreiben wir nach den Variablen die Definition der Funktionen. In<br />

diesem Fall haben wir nur eine Funktion zum Definieren.<br />

function move_view();<br />

Funktion "move_view()"<br />

Beginnen wir nun mit der Funktion "move_view()". Es umfaßt die eigentlich Bewegung der Kamera.<br />

function move_view()<br />

{<br />

zugehörigen<br />

}<br />

camera.genius = player; // Entity wird unsichtbar wenn die Kamera die<br />

// Grenzen berührt<br />

// Berechnung X-Koord. Kamera<br />

camera.x = player.x + (camera_dist * sin(camera_pan));<br />

// Berechnung Y-Kood. Kamera<br />

camera.y = player.y + (camera_dist * cos(camera_pan));<br />

camera.z = player.z + camera_z_pos; // Berechnung Höhe der Kamera<br />

vec_diff(temp,player.x, camera.x);<br />

vec_to_angle (temp,temp);<br />

camera.pan = temp.pan; // Kamera Pan-Wert<br />

camera.tilt = temp.tilt; // Kamera Tilt-Wert<br />

Die erste Zeile der Funktion bewirkt das der Player unsichtbar wird sobald die Kamera die Grenzen<br />

der Entity berührt. Was in unserem Fall aber nicht auftreten wird. Zeile Zwei und Drei geben die<br />

Berechnung der x- und y-Koordinaten der Kamera bezogen auf die Weltkoordinaten an. Ich will<br />

hier nicht weiter auf diese Winkelberechnungen eingehen, da es hier den Rahmen wohl sprengen<br />

würde. Hierzu gibt es auf der Website von Grimber ein sehr ausführliches Tutorial von "Evelyn<br />

Boo". Nur soviel sei gesagt das wir mit den Angaben in der Klammer "(camera_dist *<br />

sin(camera_pan))" die x-Koordinate unserer Kameradistanz berechnen und mit der Anderen die y-<br />

Koordinate. Die dritte Zeile beinhaltet die Berechnung der Kamerahöhe. In den darauffolgenden<br />

Zeilen wird einmal der Vektor von der Kamera zum Player berechnet und mit "vec_to_angle" der<br />

Winkel dieses Vektors bestimmt. Danach werden die Pan- und Tilt-Winkelder Kamera danach<br />

ausgerichtet. So das erste Skript wäre nun vollendet. Wenden wir uns nun schwierigeren Dingen<br />

zu.<br />

<strong>3D</strong> <strong>GAMESTUDIO</strong>-<strong>Magazin</strong> ■ <strong>Ausgabe</strong> <strong>01</strong> | <strong>Oktober</strong> 2005 │68

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!