3D Gamestudio und MySQL
3D Gamestudio und MySQL
3D Gamestudio und MySQL
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