Auto - Heck ausbrechen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

AmateurBB

Betreff: Auto - Heck ausbrechen

BeitragSo, Okt 11, 2009 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Ich programmiere gerade ein 3D-Autospiel. Ich habe die 3D-Modelle usw. fertig, aber die Autophysik macht mir zu schaffen, da sie möglichst realistisch sein soll.

Mein Code für die Physik ist bisher folgender (den Rest hab' ich der Übersichtlichkeit halber weggelassen):
Code: [AUSKLAPPEN]
Graphics3d 640, 480, 32
setbuffer backbuffer()
camera=CreateCamera()

Rotateentity camera, 90, 0, 0
PositionEntity camera, 0, 20, 0

light=CreateLight()

auto = CreatePivot()  ;Antriebspivot

karosse = CreateCube(); karosse
rad1 = CreateCube(karosse); räder
rad2 = CreateCube(karosse)
rad3 = CreateCube(karosse)
rad4 = CreateCube(karosse)
PositionENTITY rad1, 0.69, 0.28, -1.02; räder positionieren
PositionENTITY rad2, -0.69, 0.28, -1.02
PositionENTITY rad3, 0.66, 0.28, 1.3
PositionENTITY rad4, -0.66, 0.28, 1.3
RotateMesh rad2, 0, 180, 0; räder richten
RotateMesh rad4, 0, 180, 0

PositionEntity auto, 0, 0, 5; pivot versetzen

While Not KeyDown(1)
if Keydown(205) lenk# = lenk# - ((40-ABS(gesw#))+lenk#)/20;lenken
if Keydown(203) lenk# = lenk# + ((40-ABS(gesw#))-lenk#)/20
if Keydown(200) gesw# = gesw# + .1; beschleunigen
if Keydown(208) gesw# = gesw# - .1
if keyhit(28) then gesw# = 0; notbremse
if keyhit(3) then grip = 1 - grip; gripcheat
lenk# = lenk# - SGN(lenk#); automatische rücklenkung


RotateEntity rad3, 0, lenk#, 0 ;gfx räder drehen
RotateEntity rad4, 0, lenk#, 0


if grip = 0 then; grip fehlt
   RotateEntity auto, 0, EntityYaw#(karosse)+lenk#, 0
endif

MoveEntity auto, 0, 0, gesw#/10 ; Vorwärts
PointEntity karosse, auto; karosse mitdrehen
MoveEntity karosse, 0, 0, EntityDistance(karosse, auto)-1.32; karosse anhängen


RenderWorld
Flip

wend


Jetzt soll bei bestimmen Aktionen (Handbremse, Öl, enge Kurven) das Heck ausbrechen und das Auto ins Schleudern geraten. Bisher blockiert nur die Lenkung und das Auto rutscht nach vorn. Was muss ich ändern?
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/

ToeB

BeitragSo, Okt 11, 2009 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein ansatz wäre ja Verlet Physik im einfachem sinne. Guck dir mal meine PanzerPysik im Codearchiv an. Ich erkläre das hier mal kurz :

Es gibt 5 Objecte. 4 sind die einzellnen Räder das fünfte ist das Auto. Jetzt kann jedes Rad bewegt werden hat also eine geschwindigkeit und x/y/z positionen. Dann hat das Auto bspw. hinterrad antrieb, die räder bewegen sich um 0.5 nach vorne. Jetzt kommt die Physik ins spiel : Du verbindest die Räder mit unsichtbaren "federn" wie bei Verlet. und zwar so das jedes Rad mit jedem verbunden ist. Such dafür mal nach "Verlet" hier im Forum, wirst du einiges zu finden. Das Prinzip hierbei ist es, das wenn die Räder sich auseinader bewegen, sie wieder zurückgesetzt werden, also so das wenn sich die räder um 0.5 nach vorne bewegen, das die vorderäder sich um 0.5 mit nach vorne bwegen. Dreht man jetzt die Beiden vorderen Räder, so bewgen diese sich seitich vom Auto weg. Also werden die hinterräder hinter die Vorderräder gesetzt und fertig. Nur noch die Winkel zwischen den Rädern ermitteln und das Auto draufsetzten - fertig.

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Hakkai

BeitragSo, Okt 11, 2009 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Heckausbruch nennt man Übersteuern.
Über die Vorderreifen rutschen ist Untersteuern.
Beim Übersteuern muss man besonders Hinterradbetriebene Fahrzeuge von Allrad und Frontantrieb unterscheiden.

Also ich geh mal davon aus das du mit Frontantrieb übersteuern willst. (nicht gerade ein wahrer Drift, aber was sollst)

Beschleunigen -> Fahrzeug lehnt sich nach hinten, mehr Grip hinten als vorn.

Lenken -> Fahrzeug lehnt sich auf die Äuseren Räder -> Grip ausen mehr als innen, Fliehkraft beachten.
+
abruptes Bremsen -> Fahrzeug lehnt sich nach vorn, hinten kaum noch grip.

: Da die Räder hinten quasi schweben kommt das Heck und zwar in die Richtung wohin die Fliehkraft vor dem Lenken gewirkt hat. Also beim rechts um die Kurve fahren, rutscht das Heck links an dir vorbei.

Bei Frontantrieb kann man gleich nach dem Einlenken die Handbremse verwenden um die Spurhaltenden Räder (Hinterräder) schon früher ins Schliddern zu bringen
Das ist sogar notwendig ...
falls die normale Bremse nicht ausgereicht gehabt hat
oder man nicht schnell genug war um genügend Fliehkraft aufzubauen.

Beim Heckantrieb/Hinteradantrieb kannst du beim ausbrechen schon wieder gasgeben, da er die Kraft der Hinterräder eh nicht mehr auf die Straße übersetzt bekommt, das ist dann ein richtiger Drift da er länger anhält als simples Handbremse ziehen und warten bis es vorbei ist.

Wie du siehst brauchst du irgendwo noch eine Variable Fliehkraft, wenn du die Physik richtig umsetzen willst. Ich hoffe ich konnte dir etwas sagen das du nicht bereits wusstest. Kenne mich mit Rennspielen und Hinterradbetriebenen Fahrzeugen nicht besonders aus, aber das ist so die Theorie wenn ich sie richtig verstanden habe.

Noobody

BeitragSo, Okt 11, 2009 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
In diesem Tutorial wird sehr gut beschrieben, wie man eine Fahrphysik in 2D aufbaut. Je nach dem, wie deine Strecken aussehen, reicht das bereits; wenn sich dein Fahrzeug aber noch überschlagen soll oder ähnliches, brauchst du eine echte Physikengine wie etwa ODE oder Newton (soweit ich weiss, haben beide Autobeispiele dabei).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

AmateurBB

Betreff: Danke

BeitragMo, Okt 12, 2009 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, ich werde mich erstmal in die Physikenginen reinarbeiten. Wink
Notebook Medion 97400 | 2 Ghz | 2x ATI Radeon XPRESS 200M (onboard) | Blitz3D 1.86 | Windows 7 / Windows XP | http://www.powerswitch-entertainment.de.vu/

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group