Das alte Lied: Physik

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Das alte Lied: Physik

BeitragDi, März 20, 2018 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen,

ich schon wieder (merkt man, dass ich aktuell aktiver in BlitzMax unterwegs bin? Embarassed). Es geht wie immer um Physik. Ich habe aktuell eine Tilemap, auf der ich Mapobjekte spawnen kann. Diese Mapobjekte haben alle eine gemeinsame Basisklasse: TAbsMapObject. Jede "Art" von Mapobjekt setzt diese Klasse mit den benötigten Methoden um (So gibt es bspw. eine Spielermapobjekt-Klasse, eine Fahrzeugmapobjekt-Klasse, usw.). Das Problem sind die Fahrzeuge: Diese können aktuell fahren und lenken. Sie kollidieren auch schon mit der Tilemap und gegenseitig. Das Problem ist nun, dass die Fahrzeuge - egal mit welcher Geschwindigkeit - wie auf Schienen fahren. Die Frage ist jetzt weniger ein Coding-Problem, als viel mehr ein physikalisches-Grundwissen-Problem (daher weiß ich nicht, ob das hier das richtige Subforum ist, falls nicht kann dieser Thread gerne verschoben werden).
Aktuell ist das Fahrzeug wie folgt aufgebaut: Es gibt ein Modell in Form eines normalen PNGs. Zusätzlich kenne ich die Positionen der zwei Achsen (ich beschränke mich hier auf exakt zwei Achsen) auf vertikaler Ausrichtung (ich gehe davon aus, dass die obere Kante des Bildes die Front des Fahrzeugs darstellt). Sprich: Wenn das Fahrzeug 100px "lang" ist, weiß ich z.B. dass die erste Achse auf Position 25 und die zweite Achse auf 75 px ist. Des Weiteren kenne ich das Gewicht in kg und die aktuelle Geschwindigkeit in m/s.
Das soweit zur Ausgangslage. Nun ist die große Quizfrage: Ab wann unter- bzw. übersteuert ein Fahrzeug. Zur Klärung der Begriffe: Untersteuerung ist, wenn ein Fahrzeug z.B. weiter geradeaus fährt, obwohl die Lenkung in eine Richtung eingeschlagen ist. Übersteuerung ist, wenn das Heck des Fahrzeugs in einer Kurvenfahrt ausbricht, also die hinteren Räder seitlich Kraft erhalten.
Zur Untersteuerung wäre mein aktueller Lösungsansatz das Festlegen eines Maximalgewichts. Je näher das Gewicht des Fahrzeugs an dieses Gewicht heran kommt, desto mehr untersteuert es bei z.B. 100 km/h (~ 27,78 m/s) (ein Fahrzeug, welches dieses Maximalgewicht hätte, würde bei 100 km/h gar nicht mehr auf die Lenkung reagieren). Ich hoffe aber auf eine "dynamischere" Lösung, sodass ich auch Fahrzeuge haben kann, die schwerer sind (ich möchte relativ wenig Werte beschränken auf einen Gültigkeitsbereich). Zur Übersteuerung fehlen mit aktuell noch jegliche Lösungsansätze. Zumal ich nicht weiß, wie ich unterscheiden kann, ob ein Fahrzeug unter- oder übersteuert (unabhängig von der angetrieben Achse, welche ich nicht berücksichtige)...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

BladeRunner

Moderator

BeitragDi, März 20, 2018 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Das lässt sich so pauschal nicht beantworten. In der Realität spielen da ja noch so Dinge eine Rolle wie: Art des Bodenbelags, Art der Reifen, gibt es plötzliche Lastwechsel (Übersteuern zB durch kurzes Anziehen der Handbremse etc)
Das korrekt nachzubilden ist eine Menge Arbeit.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Xeres

Moderator

BeitragDi, März 20, 2018 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es dazu Formeln gibt, macht es Sinn sich die Proportionalitäten an zu gucken (Verhält sich Übersteuerung proportional zu v oder vielleicht zu v²?). Ansonsten macht es wenig Sinn, sich mit realen Einheiten daran zu machen und was aus zu rechnen - ich meine, der "realistische" Effekt ist für eine Spielmechanik einfach untauglich.

Lege eine Geschwindigkeit für das Fahrzeug fest, ab der die Steuerung langsamer reagiert und teste herum bis es sich gut anfühlt - das wäre mein Ansatz.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

CO2

ehemals "SirMO"

BeitragFr, März 23, 2018 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

entschuldigt die verspätete Antwort Embarassed

Ich hatte vergessen zu erwähnen, dass es nicht unbedingt realistisch sein muss, es reicht mir eine "Faustformel". Auch unterschiedliche "Bodenbeläge" betrachte ich nicht weiter.
Aktuell mache ich zur Untersteuerung folgendes: Ich habe ein Maximalgewicht von 50t festgelegt und eine Geschwindigkeit von 50km/h, bei der ein Fahrzeug mit Maximalgewicht nicht mehr auf die Lenkung reagiert. Dies klappt in der Regel für die "genutzten" Fahrzeuge auch gut, diese halten sich im Gewichtsbereich von 1t bis 15,5t auf. Das Problem, welches ich nun mit der Übersteuerung habe, ist: Ein Fahrzeug kann ab einer Geschwindigkeit entweder Über- oder Untersteuern, aber nie beides gleichzeitig.
Folgende Überlegungen hatte ich dazu gemacht:
- Ein Fahrzeug unter- / übersteuert nicht, wenn seine Geschwindigkeit = 0 ist.
- Ein Fahrzeug untersteuert, wenn sein Impuls (Masse mal Geschwindigkeit) einen gewissen Schwellwert übersteigt (siehe 50t, resp. 50km/h)
- Ein Fahrzeug übersteuert, wenn - und hier weiß ich nicht weiter. Einzige Lösung, die ich aktuell habe, ist auf einen Tastendruck zu "horchen", welcher die Handbremse aktiviert. Wenn dabei eine Kurve gefahren wird, dann übersteuert das Fahrzeug. D.h. jedoch auch, dass man in der Regel nicht übersteuern kann, da hierfür die Betätigung einer Taste erforderlich ist. Und hier wollte ich eigentlich ansetzen, jedoch fehlt mir hierzu das entsprechende Wissen...

Für mein Arcade-lastiges Spiel würde - wie geschrieben - eine "etwa"-Lösung vollkommen reichen. Auch die Nutzung der Handbremse finde ich zunächst nicht sonderlich störend, jedoch würde ich gerne auch Fahrzeuge haben, die unter "normalen" Umständen (sprich: Ohne das Drücken einer speziellen Taste) übersteuern können.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group