11.12.2012 Aufrufe

3D Gamestudio und MySQL

3D Gamestudio und MySQL

3D Gamestudio und MySQL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Das ist klar denn in diesem Fall wäre der Schwerpunkt nicht über dem Abgr<strong>und</strong> <strong>und</strong> im zweiten Fall<br />

die Abfrage alles Punkte der Entity nach unten, denn da würde ja der freie Fall nach unten<br />

vorliegen was eine seitliche Drift auch beenden würde. Als nächste folgt wieder die Abfrage der<br />

einzelnen Aussenpunkte der Entity ob diese mehr als 5 Quants vom Boden entfernt sind <strong>und</strong> die<br />

darauffolgende Berechnung des Neigungswinkels mit Hilfe des Arcustangens.<br />

Mit temp = atan(my._dist_floorL/(my._entity_y/2)) berechnen wir den Neigungswinkel der Entity.<br />

Neigungswinkel = Arcustangens(Abstand zum Boden Links / Halbe Entity Breite). Dies ist also der<br />

Neigungswinkel, den die Entity erreichen muss wenn sie über einen Abgr<strong>und</strong> geschoben wird. Es<br />

folgt nun die Abfrage ob der Neigungswinkel grösser als der momentane Winkel der Entity ist.<br />

Sollte das der Fall sein wird zyklisch der Wert 1 zum Winkel der Entity dazu addiert. Die<br />

Berechnung der Neigungswinkel der anderen 4 Eckpunkte findet auf die selbe Art statt.<br />

3.7 Die Funktion "Anziehungskraft()"<br />

function Anziehungskraft()<br />

{<br />

}<br />

// in der Luft?<br />

if (my._dist_floorM > 5 && my._dist_floorL > 5 && my._dist_floorR > 5 &&<br />

my._dist_floorF > 5 && my._dist_floorB > 5)<br />

{<br />

}<br />

force.z = -5; // Schwerkraft<br />

friction = 0.1; // Luftreibung<br />

// Geschwindigkeit vertikal<br />

my._Bewegung_Vert = time*force.z + max(1-time*friction,0)*my._Bewegung_Vert;<br />

my._absoldis_Z = time * my._Bewegung_Vert;<br />

// Bis zu 5 Quant über dem Boden<br />

if (my._BODENHÖHE < 5 && my._BODENHÖHE > 0)<br />

{<br />

}<br />

my._Bewegung_Vert = 0;<br />

my._absoldis_Z = 0;<br />

// Eintauchen im Boden<br />

if (my._BODENHÖHE < 0 )<br />

{<br />

}<br />

force.z = -0.5 * my._BODENHÖHE; // Boden-Elastizität<br />

friction = 0.5; // Bodenreibung<br />

// Geschwindigkeit vertikal<br />

my._Bewegung_Vert = time*force.z + max(1-time*friction,0)*my._Bewegung_Vert;<br />

my._absoldis_Z = time * my._Bewegung_Vert;<br />

Kümmern wir uns nun um die Anziehungskraft, die ja bekanntlich auf jeden Körper wirkt. Als<br />

erstes Testen wir ob sich die Entity in der Luft befindet. Das überprüfen wir indem wir feststellen ob<br />

sich jeder Aussenpunkt mindestens 5 Quants über dem Boden befindet. Ist dies der Fall übergeben<br />

wir die Parameter der Schwerkraft <strong>und</strong> der Luftreibung <strong>und</strong> berechnen damit eine negative, da die<br />

Schwerkraft den Wert -5 hat, vertikale Bewegung.<br />

<strong>3D</strong> GAMESTUDIO-Magazin ■ Ausgabe 05 | Juni 2007 │37

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!