Jump to content
Unity Insider Forum

Frage zum WheelCollider


Gruftsocke

Recommended Posts

Hallo zusammen,
Ich bin neu hier und habe auch direkt mal eine Frage zu den WheelCollider in Unity.
Derzeit versuche ich einen Gliederzug (LKW mit Drehschemelanhänger)  in Unity umzusetzen, probleme macht mir dabei der Anhänger.
Mir scheint es so, als würden die WheelCollider vom Anhänger, wenn sie in Ruhrposition stehen, blockieren also nicht bewegt werden.
Die Werte von brakeTorque sind bei allen Rädern auf 0f gesetzt, sollte damit keine Bremswirkung haben.
Die Verbindung vom LKW zum Anhänger habe ich über 3 HingeJoints realisiert.

  • Ein HingeJoint, welches den Vorderwagen (Dolly) mit den Anhängergestell verbindet (Ausrichtung y-achse).
  • Ein HingeJoint, welches die Deichsel mit den Vorderwagen verbindet (Ausrichtung x-achse)
  • Ein HingeJoint,welches den LKW mit der Deichsel verbindet (Ausrichtung y-achse)

Es gibt 4 Rigidbodies:

  • Der LKW (Masse: 7500 kg)
  • Die Deichsel (Masse: 1kg)
  • Der Vorderwagen (Masse 300 kg)
  • Das Anhängergestell (Masse: 6500 kg)

Wie oben bereits erwähnt bewegt sich der Gliederzug nicht, da die WheelCollider vom Anhänger blockieren.
Ich weis nicht woran das liegen kann.
Die WheelCollider haben alle (LKW, Anhänger) die Standardwerte so wie Unity sie vorgibt.
Kann das sein das ich, wenn der Anhänger mit den LKW verbunden ist, die WheelCollider als Antriebsräder setzen muss?
Ich habe den Versuch gemacht, den LKW mit hoher Geschwindigkeit in den Anhänger zufahren (beide Einheiten waren voneinander getrennt), nachdem der Anhänger einen starken Impuls vom LKW bekommen hat rollte er so wie er sollte.
Den zweiten Versuch den ich gemacht habe, war den Anhänger alleine auf einer Rampe mit ca 13 Grad Neigung zu positionieren.
Nach den start der Szene über Unity-Editor blieb der Anhänger regungslos auf der Rampe stehen obwohl der Wert von brakeTorque auf 0 gesetzt ist ebenso sind die Werte von motorTorque auf 0.
Woran kann das liegen das WheelCollider die nicht als Antriebsräder gesetzt wurden blockieren?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habe noch nicht mit Reifen gearbeitet, aber da bisher noch keiner geschrieben hat, schreib ich mal Theoretisch.

Also mir fällt erstmal ins Auge das die Gewichte sehr komisch sind.

Also ich denke dein Vorderwagen stellt die Zugmaschiene dar? da wären 300KG ganz schön wenig.

Falls du eine Elektro Ameise aus Supermärkten oder Lager kennst, die wiegen selbst ca. 300KG und können eine last von ca. 2000KG transportieren.

Also wiegt eine Zugmaschiene erheblich mehr.

Und ich denke daran liegt es. Du sagst ein Starker Imupls bringt den Anhänger zum rollen. Das liegt wohl daran, das er sehr schwer ist und somit am Boden Klebt wie ne eins.

Also benötigst du viel Kraft um ihn zu bewegen. 

Ich würde deine Zugmaschiene schwerer oder Anhänger Leichter machen um erstmal schaun ob es was bringt.

Hoffe mein Ansatz kann dir helfen.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 34 Minuten schrieb Sir_Mathew:

Also mir fällt erstmal ins Auge das die Gewichte sehr komisch sind.

Also ich denke dein Vorderwagen stellt die Zugmaschiene dar? da wären 300KG ganz schön wenig.

Nein der Vorderwagen ist etwas anderes, vllt kennst du das unter den Begriff 'Drehschemel' das ist die gelenkte vorder Achse am Anhänger dort wo auch die Deichsel dran montiert ist. Es liegt aber nicht an den Gewichten. Ich habe im Englischen Unity-Forum auch einen Beitrag aus den Jahr 2015 gefunden dort hatten auch ein paar Leute das selbe Problem aber keine Lösung dazu gefunden.

Selbst wenn ich das Beispielfahrzeug aus der Unity-Dokumentation, 1 zu 1 übernehme und dieses auch auf einer schräge platziere (so ca 13 - 15 Grad Neigung) bleibt dieses Fahrzeug an Ort und Stelle stehen obwohl Gravitation eingeschaltet ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ah grad gegoogelt, ja Drehschemel sieht ja doch ganz anders aus, wie ein LKW.

Kannst den Drehschemel auf noch schräge Orte Platzieren? 90 Grad z.b.?

Ansonsten weis ich auch nicht, würde das gerne Probieren, aber hab sowas nicht.

Ich denke immer noch, liegt am Gewicht. Das Gewicht liegt auf den Räden und somit werden diese Platt gequetscht.

Oder Reibung oder Federwirkung der Reifen etc. 

Hatte irgendwann mal ne Kugel auf einer Kugelbahn laufen lassen ohne Probleme.

Da gab es auch jede Menge mögliche Einstellungen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kenne mich leider mit den Wheel Collidern nicht so aus, aber ich versuche das mal über den Rigidbody zu erschließen.
Bei RB gibt es einen Moment, bei dem er einschläft. Das passiert immer dann, wenn die Forces unter einen Schwellenwert fallen.
Ist so ein RB erst einmal eingeschlafen, rollt oder rutsch er ungern wieder los, egal ob sich der Untergrund in der Neigung verändert, oder nicht.
Um das zu umgehen gibt es einen WakeUp Befehl, der den RB aufweckt. Ich nutze das bei meinen Flippern. Da frage ich ab ob der RB schläft, und wenn ja, dann wecke ich ihn.

Beim WheelCollider soll ja die Physik von der allgemeinen Physik losgelöst sein. Aber es gibt auch hier Reibungen und Kräfte.
Da du geschrieben hast, dass der Anhänger sich doch bewegt, nachdem er einen starken Impuls bekommen hat, gehe ich davon aus, dass irgendwo die Reibungswerte zu hoch sind.

Möglicherweise kannst du mit der ForwardFriction etwas lösen, indem du sie verringerst.

Ich habe auch gelesen, dass gewisse Werte nicht 0 sein können oder dürfen, wie z.B. die Wheel Damping Rate!
Mir ist bei der normalen Physik selbst schon aufgefallen, dass eine 0 zu Fehlern führen kann. Einen sehr kleinen Wert (anstatt der 0 eine 0.001 eintragen) hat bei mir geholfen.

Vielleicht spiel das Ganze doch auch mit dem RB zusammen und ein aufwecken des RB's könnte helfen.

 

Tja, leider kann ich nicht mehr dazu sagen. Aber vielleicht bringt es dich in die richtige Richtung. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb Sir_Mathew:

Kannst den Drehschemel auf noch schräge Orte Platzieren? 90 Grad z.b.?

Ansonsten weis ich auch nicht, würde das gerne Probieren, aber hab sowas nicht.

Ich denke immer noch, liegt am Gewicht. Das Gewicht liegt auf den Räden und somit werden diese Platt gequetscht.

Habe ich auch schon versucht schräger zustellen, das Ding bleibt wo es ist. Laut Unity-Doku solle man den Reifen ein Gewicht zwischen 20 - 80 kg zuweisen, da bin ich ja drin im Bereich. Auch das RB habe ich mal einen Wet von 1000 bis 1500 zugewiesen. Das sind so die Werte die man auch aus der Unity-Doku entnehmen kann. Das geht aber auch nicht.

vor 40 Minuten schrieb malzbie:

Ich kenne mich leider mit den Wheel Collidern nicht so aus, aber ich versuche das mal über den Rigidbody zu erschließen.
Bei RB gibt es einen Moment, bei dem er einschläft. Das passiert immer dann, wenn die Forces unter einen Schwellenwert fallen.
Ist so ein RB erst einmal eingeschlafen, rollt oder rutsch er ungern wieder los, egal ob sich der Untergrund in der Neigung verändert, oder nicht.
Um das zu umgehen gibt es einen WakeUp Befehl, der den RB aufweckt. Ich nutze das bei meinen Flippern. Da frage ich ab ob der RB schläft, und wenn ja, dann wecke ich ihn.

Das kann ich nur bestätigen. Auch das habe ich schon versucht, man sieht ja im Inspektor unter "Rigidbody->Infos->SleepState" der zwischen Awake und Sleep wechselt. Um das abzuschalten muss man nur den "sleepThreshold" Wert auf Null setzen dann bleibt er immer im Awake aber das sollte man wirklich nur zum Testen machen.

vor 40 Minuten schrieb malzbie:

Beim WheelCollider soll ja die Physik von der allgemeinen Physik losgelöst sein. Aber es gibt auch hier Reibungen und Kräfte.
Da du geschrieben hast, dass der Anhänger sich doch bewegt, nachdem er einen starken Impuls bekommen hat, gehe ich davon aus, dass irgendwo die Reibungswerte zu hoch sind.

Möglicherweise kannst du mit der ForwardFriction etwas lösen, indem du sie verringerst.

Kann ich auch nur bestätigen, das die WheelCollider abgekapselt von der restlichen Physik sind zumindest der Mathematische Teil. Mit der ForwardFriction habe ich auch schon rumgespielt aber es ändert nix an diesesn Problem. Mir ist aber aufgefallen das Unity anscheind bei der Berechnung die motorTorque mit einbezieht auch wenn der Wert Null ist. Da kann dann nur Null bei rum kommen, ich habe einfach mal den Wert von motorTorque auf 0.000001f gesetzt und siehe da er Rollt. Aber das kann ja nicht die Lösung sein.

vor 40 Minuten schrieb malzbie:

Ich habe auch gelesen, dass gewisse Werte nicht 0 sein können oder dürfen, wie z.B. die Wheel Damping Rate!
Mir ist bei der normalen Physik selbst schon aufgefallen, dass eine 0 zu Fehlern führen kann. Einen sehr kleinen Wert (anstatt der 0 eine 0.001 eintragen) hat bei mir geholfen.

Das mit den Null-Werten könnte sogar auf motorTorque zutreffen. Wie gesagt ich habe es mal mit 0.000001f bei motorTorque versucht und es geht. Nur ob es so richtig ist kann ich mir nicht vorstellen.

Erstmal vielen Dank an euch beiden für eure Hilfe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Doch das ist meiner Meinung nach schon logisch und richtig.
Zum Beispiel: eine Division durch 0 ergibt immer einen Fehler. Dieser kann zwar abgefangen werden, damit das Programm weiter läuft, trotzdem ist dann kein nutzbarer Wert da. Wer weiß, wie da physikalisch berechnet wird.  0 und Unendlichkeiten gehen einfach nicht.

Bei mir war es einfach nur ein Untergrund, der keinerlei Reibung hatte (beide Friction-Werte auf 0). Das ging sogar ne Zeitlang gut. Aber dann plötzlich, nachdem ich ganz andere Dinge verändert hatte, hat sich mein Flugzeug beim Starten überschlagen. Da habe ich auch ne Zeit lang gesucht. (Die Räder vom Flugzeug rollen nicht sondern rutschen einfach nur, weils einfacher umzusetzen war und nicht drauf an kommt) ;)

Nimm einfach kleine Werte und schon ist alles gut. :)

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...