Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

21.02.2016, 21:30

Arcade Racer: Steuerung und Physik

Servus

Ich bräuchte bitte euer Feedback zu meinem aktuellen Projekt, stehe da wohl gerade etwas auf der Leitung.

Zur Zeit versuche ich, eine direkte arcadelastige Steuerung zu implentieren, wobei Physik eine Rolle spielen wird und ich deshalb auf Rigidbodies zurückgreife. Vorweg wäre zu sagen, daß ich Unity in Kombination mit Playmaker verwende, also State Machines nutze und selbst nicht wirklich viel code. Deshalb geht es mir eher um's Prinzip, wie ich das Ganze am Besten umsetze.

Folgende Methoden habe ich bereits getestet:

A) Rigidbody durch Force an Controller Achse lenken, Auto dreht sich in Fahrtrichtung durch eine smooth look at direction Funktion.
B) Controller Achsen rotieren Auto durch smooth look at direction Funktion, Magnitude als Force nur in lokale Blickrichtung des Autos.
C) Unity Wheel Collider (siehe 2. Teil meines Videos - grober Prototyp)
D) Auto per Character Controller bzw direkt per Translate Funktion steuern, zusätzlich würden wohl noch Raycasts für eine korrekte Rotation anhand der Untergrund Normale hinzukommen.

Vom Feeling der Variante D) war ich nicht überzeugt. C) war ganz nett, da sich die Physik Interaktion durch die Wheel Collider ganz gut anfühlt. Hierbei müsste ich halt noch anpassen, daß sich das Auto beim Lenken nach links/rechts direkt dort hinbewegt. Von Haus aus steuert man mit der horizontalen Achse ja nur die Ausrichtung der Reifen. Bei Variante A) bewegt sich das Auto direkt in die angesteuerte Richtung, so will ich es auch im finalen Spiel. Nur gibt es hierbei keinen Drehpunkt, wenn ich die Richtung wechsle. Deshalb daraus Variante B) gebastelt. Aktuell mein Favorit...fühlt sich ganz gut an (siehe erster Teil im verlinkten Video).

Das Problem dabei: Durch die smooth look at direction Funktion in Richtung der aktiven Controller Achse schaut das Auto zwar in die richtige Richtung, fixiert dabei aber X Y Z (also zB 0/90/0 wenn's nach Rechts schaut). Nötig wäre in dem Fall aber nur Y. Wenn ich nun also zB mit einem Objekt kollidiere, gibt es keinerlei Rotation bzw Schwanken meiner Karre. Siehe erster Teil im Video, direkt nach dem Rumfahren klicke ich auf das Auto und übe eine Kraft am Klickpunkt aus - das Auto hüpft nur starr. Nun werde ich versuchen, die Blickrichtung Rotation nur an der einen benötigten Achse auszuführen, und hoffe, daß keine weiteren Probleme auftreten. Zusätzlich werde ich wohl noch eine Funktion einbauen müssen, um das Auto korrekt zu rotieren (anhand der Untergrund Normale) wenn es zB eine Rampe rauffährt.

Im Netz habe ich auch noch eine Art Hovercraft gefunden, dabei schwebt das Auto auf 4 Raycasts...muss ich mir noch genauer anschauen. Wie würdet ihr das angehen? Wie gehabt, ich werde wohl auf Variante B) aufbauen und herumexperimentieren - aber vl. hab' ich eine einfachere oder bessere Lösung komplett übersehen. Wichtig nur: Direkte Steuerung, Auto fährt also in die angesteuerte Richtung. Physik interagiert oft mit dem Fahrzeug, sollte also nicht beschnitten werden. Schwerpunkt Arcade, Auto kann also zB auch Umfallen, sollte aber nur in Ausnahmefällen geschehen.

Prototyp Video:
https://youtu.be/SgksJBUH1Qg

Wäre für hilfreiche Ratschläge dankbar,
LG Matthias

2

24.02.2016, 08:03

Sowas in der Art, verwendet zB direkte Richtungssteuerung: https://youtu.be/DNDL2SvUMvg?t=66

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

3

25.02.2016, 18:01

Ich habe mir deinen Text jetzt schon das zweite Mal durchgelesen, doch ich kann nicht so richtig eine Frage rauslesen, die du dir nicht schon selbst beatwortet hast. Du hast schön deine 4 Möglichkeiten ausprobiert, bewertet und optimierst nun die, die dir am besten Gefällt - ist doch alles super! :)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

4

25.02.2016, 20:51

Servus

Irgenwie will es einfach nicht rund laufen, deshalb wäre gut zu wissen, ob ich vom Ansatz her komplett falsch liege bzw es eine bessere Lösung gibt.

Bei der aktuellen Variante mit Rigidbody,Force Richtung lokaler Vorderseite und Lenkung durch smooth look at Funktion wird ja die Rotationsachse gesperrst.
Mein Fahrzeug soll hat jederzeit mit allen anderen Kollisionsobjekten interagierenkönnen, schleudern, Neigung auf Rampen usw...

Nun habe ich testweise mal einen Trigger um mein Auto gelegt. Sobald zB eine Kiste den Trigger auslöst wird die smooth look Funktion deaktiviert und bei darauffolgender Kollision haut es einigermaßen hin. Nach kurzer Zeit wird die smooth look Funktion wieder aktiviert bzw das Auto wieder aufgestellt, falls es umgekippt ist. Fühlt sich meiner Meinung nach irgendwie ...seltsam bzw umständlich an, hab' da halt noch nicht viel Erfahrung. Und dann muss ich das mit der Rampe noch lösen...hoffentlich klappt das mit Raycasts. Und mit Raketen/Boxhanschuh/Öllacke usw muss das Ganze auch noch klappen argh...

https://youtu.be/Al9zYEJiV7M

Hab' zur Zeit eine "kleine Krise" im Leben, dadurch nur wenig Zeit für das Projekt und die Sache mit der Physik ist der einzige große Punkt, der mir richtig Sorgen macht.
In dem Spiel, zu dem ich den letzten Link gepostet habe, läuft das Ganze echt gut. Die haben das sicher anders gelöst. Man merkt eh, ich probier zur Zeit kreuz und quer...aber ich denk' die aktuelle Methode werde ich wohl verfeinern.

Danke für dein Feedback,
LG

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

5

26.02.2016, 00:07

Hallo,

ich kann in dem verlinkten Video nicht sehen, wie die Kamera gerollt (Rotation um Z) wird. Meinst du den Effekt aus deinem 2. Link, dass die Kamera bei einer Kollision wackelt? Das kannst du dadurch erreichen, dass du die Kräfte berechnest, die Auf dein Auto die ganze Zeit über wirken (auch wenn keine Kollision auftritt) und die Kamera wird, wenn die Kräfte eine bestimmte Grenze überschreiten (sehr starke Beschleunigung oder Kollision) entsprechend gekippt.

Die Lenkung des Autos lässt sich sicherlich einfacher realisieren. Schau mal hier. Du stellst dir einfach vor, deine Anhängerkupplung ist der Mittelpunk der Vorderräder - dieser Punkt wird durch die Tasteneingabe gesteuert: Links/Rechts ändern den Richtungsvektor und Vor/Zurück bewegen den Mittelpunkt der Vorderräder in Richtung dieses Vektors. Der Mittelpunkt der Hinterachse ist quasi der Mittelpunkt der Hinterräder des Anhängers aus dem Link. Mit meinem letzten Beitrag, wo ich die Iterationsformel beschreibe, solltest du das Problem lösen können.

Wie man das alles in Unity implementiert, kann ich dir leider nicht sagen, ich kenne mich mit Unity nicht aus. Dennoch kann dir mein theoretischer Vorschlag vielleicht helfen! :)

Ansonsten wünsche ich dir viel Kraft und Ausdauer, um die Krise möglichst unbeschadet zu überstehen!
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

6

26.02.2016, 15:26

Servus

Ich meinte bei diesem Video: https://youtu.be/DNDL2SvUMvg?t=66
... das Fahrverhalten vom Fahrzeug, nicht die Kamera.

Fährt in die Richtung, in die man lenkt. Reagiert korrekt auf Unebenheiten/Neigungen der Fahrbahn, Kollisionen und Raketentreffer.

Aktueller Stand der Dinge:

(Link)


Die obere Variante benutze ich im Moment. Wie gehabt, funktioniert auf gerader Strecke ganz gut. Die look at direction Funktion übernimmt eben die Ausrichtung der Controller Achse und wandelt es in eine Rotation um. zB rechts fahren wäre 0/90/0...würde nun eine Rakete oder irgendeine Kollisionbox in mein Auto krachen, würde es nicht rotieren oder schwanken, da die look at Funktion aktiv ist. Da müsste ich sie eben vor jeder Kollision deaktivieren, Neigungswinkel auf Rampen wohl durch Raycast/Normale ausrichten und was weiß ich noch.

Die untere Variante scheint mir vom Ansatz her besser zu sein. Ich könnte mir vorstellen, an den hinteren Kanten eine Force wirken zu lassen, wenn ich lenke. Drehpunkt wäre dann die Hinterachse. Somit hätte ich eine reine Physiksteuerung, Kollisionen und Neigungswinkel der Fahrbahn würde dann wie gewollt auf mein Fahrzeug wirken. Fehleranfälligkeit wäre mMn auch geringer. Was ich bei der Variante noch lösen müsste: Das Fahrzeug soll zB nach links fahren, wenn ich nun nach links lenke wird an die hintere linke Kante eine Force gelegt. Somit rotiert das Auto...und rotiert...und rotiert - da muss ich wohl was einbauen, damit die Force deaktiviert wird sobald die Controllerausrichtung erreicht wurde.

Sorry wenn ich mich wiederhole, ich bin grundsätzlich 3D Modellierer. In Unity verwende ich Playmaker, mit dem visuellen Layout und den State Machines komme ich ganz gut zurecht - aber diese Fahrzeug Physik macht mich noch irre. Der Rest des Spiels ist schon ganz gut durchdacht, Fahrbahn Generator steht auch schon, aber die Zeit läuft weg. Unser Gamedev Verein ist in einem Monat bei einer kleinen Spielemesse dabei, da hätte ich gerne zumindest einen kleinen Prototypen von dem Ganzen hergezeigt. Wenn ich das mit der Physik dieses Wochenende hinbekomme, geht sich das Ganze vl noch aus.

Danke, Part 2 deines Postings zieh' ich mir heute Abend nochmal rein.

EDIT: Also ich werkel gerade an der unteren Variante auf dem Screenshot rum. Könnte mir vorstellen, daß das funktioniert...Funktion 1 rotiert nun das Auto durch eine Kraft entgegen der Normalen an der Kante am Kofferraum (bzw werde ich die nach vorne versetzen), Funktion 2 vergleicht Winkel Controllerachse mit Winkel Auto, wenn die Differenz gegen 0 geht wird Funktion 1 außer Kraft gesetzt. Magnitude der Controllerachse dient als Beschleunigung...somit kontrolliere ich das Auto rein durch Physik, keine look at Funktion mehr, die mir in die Physik bzw Rotation pfuscht.

Muss ich mir nochmal alles genau durchdenken und testen, testen, testen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »LeckerHamster« (26.02.2016, 22:47)


7

27.02.2016, 19:34

https://youtu.be/LNuH42EBaKU

Geschafft, die zuletzt genannte Methode sollte funktionieren. Paar Bugs müssen noch eliminiert werden, vom Feintuning ganz abgesehen aber darauf kann ich aufbauen. Auf Rampen läuft es noch nicht ganz optimal, das bekomm' ich noch in den Griff. Ich danke für dein Input :)

LG
Matthias

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

8

28.02.2016, 12:19

8) sieht das aus! Besonders die Pfeile gefallen mir. Hat ein bisschen was von einem Dreirad... ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Werbeanzeige