Startseite | Anpassen | Blog | Extras | Anmelden | Info
Handbuch | D&D icons | GML Parser | Archiv | Iso City
Benutzername: Passwort:  
Über | Funktionen | Verzeichnis | Banner | Kontakt

Den Game Maker benutzen
Den Game Maker benutzen

Viewing the world

Normalerweise schaut man an der negativen z-Achse entlang. Oft will man in 3D-Spielen die Art auf die man die Welt betrachtet, ändern. Beispielsweise möchtest du in einem EGO-Shooter wahrscheinlich, dass die sich die Kamera ein bisschen über der xy-Ebene bewegt. Um den Blickpunkt zu verändern gibt es zwei Funktionen.

d3d_set_projection(xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup) Definiert von wo man wie die Welt betrachtet. Man gibt den Punkt von dem aus man alles betrachtet, den Punkt auf den man schaut und den up-Vektor an.

Diese Funktion bedarf etwas Erklärung. Um die Projektion zu setzen, braucht man zuerst die Position von der man schaut. welche von den Argumenten (xfrom,yfrom,zfrom) bestimmt wird. Als nächstes braucht man die Position, die man ansieht(xto,yto,zto). Zuletzt können wir die Kamera immer noch um die Linie vom Viewpoint zum Looking Point drehen, um dies zu definieren geben wir einen Up-Vektor (xup,yup,zup) (Die Richtung die In der Camera oben ist) als Argument. Z.B: Um an der xy-Eben entlang zu sehen kann folgendes benutzt werden

{
d3d_set_projection(100,100,10,200,100,10,0,0,1);
}
Man schaut vom Punkt 100, 100 und 10 über der Ebene, in die Richtung des Punktes 200, 100. Der up-Vektor zeigt zu z. Stell dir vor, du hättest ein Objekt, das die Kamera mit ihren Koordinaten darstellt. Es würde eine Position und eine direction (vielleicht sogar einen speed). Du kannst dieses Objekt nun leicht als Kamera definieren, indem du folgenden Code benutzt:

{
with (obj_camera)
d3d_set_projection(x,y,10,
x+cos(direction*pi/180),y-sin(direction*pi/180),10,
0,0,1);
}

Das könnte jetzt ein bisschen kompliziert aussehen. Wir schauen von der Kameraposition (x, y) aus, 10 über dem Boden. Um den Punkt zu erhalten zu dem wir schauen (die nächsten 3 Parameter), müssen wir ein wenig Trigonometrie benutzen. Schließlich benutzen wir den up-Vektor wie oben.

Anmerkung! Wenn Game Maker beginnt einen Raum zu zeichnen, wird der Viewpoint zurückgesetzt. Folglich ist das erste, das du tun musst, wenn du die Szene zeichnest, die Projektion so einzustellen, wie du sie brauchst. Das muss in einem Draw-Event geschehen!

Es gibt außerdem noch eine erweiterte Version obiger Funktion:

d3d_set_projection_ext(xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup, angle, aspect, znear, zfar) Eine erweiterte Version, bei der man auch den Winkel des Blickfeldes, das Bild-Seitenverhältnis und die Clipping planes angeben kann.

Die zusätzlichen Parameter funktionieren wie folgt: Nachdem Position, Zielpunkt und up-Vektor angegeben wurden, kann man immer noch den Öffnungsgrad der Linse ändern, welcher das Blickfeld bestimmt. Der Standartwert ist 45 Grad. Als nächstes wird das Bild-Seitenverhältnis angegeben. Normalerweise wird ein Wert verwendet, der dem des Rooms entspricht. Zuletzt kommen die Clipping Planes. Objekte, die näher als znear sind, werden nicht gezeichnet. Das Gleiche gilt für Objekte, die weiter entfernt als zfar liegen.Es kann wichtig sein, diese Parameter auf gut durchdachte Werte zu setzen, weil sie auch die Genauigkeit der z-Vergleiche beeinflussen. Wenn der Abstand der beiden zu groß ist, ist die Genauigkeit sehr niedrig. Normalerweise werden 1 und 32000 als Werte benutzt. znear muss größer als 0 sein!

Manchmal braucht man kurzzeitig eine Orthografische Projektion, weil sie verwendet wird, wenn 3D nicht aktiviert ist, z.B. um ein HUD (Head-Up-Display = Anzeigen) zu zeichnen. Dafür kann man folgende Funktionen verwenden:

d3d_set_projection_ortho(x, y, w, h, angle) Setzt eine normale orthografische Projektion, in der angegebenen Größe und Position im Raum, um den angegebenen Winkel gedreht.
d3d_set_projection_perspective(x, y, w, h, angle) Setzt eine perspektivische Projektion auf den angegebenen Bereich im angegebenen Winkel.

Normalerweise wird es dazu benutzt, um z.B. die Punkte anzeigen zu lassen. Zusätzlich zu oben genannter Funktion sollte das Hidden Surface Removal deaktiviert werden, weil die Information unabhängig von der derzeitigen depth drawen wollen. Das folgende Beispiel zeigt wie man eine Anzeige mit der Punktzahl realisiert.

{
draw_set_color(c_black);
d3d_set_projection_ortho(0,0,room_width,room_height,0);
d3d_set_hidden(false);
draw_text(10,10,'Score: ' + string(score));
d3d_set_hidden(true);
}

Suche Suche


Alternative Versionen Alternative Versionen

Du kannst dieses Handbuch auch auf einer langen Seite (± 1.5 mb) ansehen.

Auch verfügbar in: Niederländisch Englisch Französisch

ZIP Download helpfile

Werbung Werbung

GameMaker Handbuch