2015-12-20 20 views
5

Ich versuche Auto drehen mit HingeJoint (oder konfigurierbaren Joint) in Unity Game Engine.Ändern der Achse der Scharnierverbindung durch Skript in Unity

Ich habe 4 Räder am Hauptteil mit den Verbindungen befestigt, was gut funktioniert. Jetzt muss ich die Gelenkachse (relativ zum Hauptkörper) mit einem Controller-Skript ändern, um die Räder drehen zu lassen. Es tut was ich brauche, wenn ich den Z-Wert der Achse im Inspector ändere (die Achse relativ zum Hauptkörper rotieren), aber wenn ich versuche, die Z-Achse im Skript zu ändern, werden die Dinge verrückt. Scheint mir, dass die Achse relativ zum übergeordneten Körper ist, bevor Sie das Spiel ausführen, aber wenn Sie es ausführen, wird die Achse möglicherweise absolut oder etwas.

Ich habe versucht, eine Antwort für einige Zeit zu finden, aber ich konnte nichts in Bezug auf die Achse finden.

Nur was ich gefunden habe, ist über TargetRotation (auf konfigurierbaren Gelenk), was ist eigentlich nicht das, was ich suche, weil ich glaube, dass Sie einige Grenzen in einer anderen Achse setzen müssen, damit es funktioniert, so dass die bereits elastischen Gelenke wackle noch mehr. Offensichtlich muss das Ergebnis so streng wie möglich sein. Immer noch, wenn Sie eine Idee haben, wie man das mit TargetRotation macht, lassen Sie es mich bitte wissen, weil ich noch nicht einmal in der Lage war zu erkennen, wie es tatsächlich funktioniert.

Ich glaube, die Frage ist ziemlich einfach, aber wenn Sie denken, dass die Frage nicht klar genug ist, lassen Sie mich wissen, damit ich einige Bilder für eine bessere Erklärung hinzufügen werde.

EDIT: Nun wurde so hier vorgeschlagen ein paar mehr Infos Zugabe gehen wir:

Hier ist, was ich habe enter image description here

Wie u seine einfache Box mit 4 Zylindern sehen mit configurablejoints an der Box angebracht . Alle Elemente sind auf der gleichen Wurzelebene und haben feste Körper.

In roten Kreisen können Sie verschiedene Achsenrotationen sehen, die durch Ändern der Achsen-Z-Werte (von -1 bis 1) im Inspektor gemacht werden, was genau ich per Skript tun muss, um das Fahrzeug zu lenken.

Unfortunatelly wenn I-Achse Z-Controller in Skript wie das hinzufügen:

 float steering = Input.GetAxis("Horizontal"); 
     configurableJoint.axis = new Vector3(configurableJoint.axis.x, configurableJoint.axis.y, steering); 

Es bricht wie folgt aus: enter image description here

Also, was ich möchte, ist eine Idee, wie diese Funktion erreicht werden könnte, wie gut als jemand, der mir erklären kann, wie die Achsen der Gelenke funktionieren würden, wäre nett.

Vielen Dank im Voraus für jede Anstrengung

+0

Fügen Sie weitere Informationen zum angezeigten Verhalten hinzu. Screenshots und Code-Snippets helfen anderen Benutzern dabei, Ihnen zu helfen. –

+0

Ich glaube wirklich nicht Scharnier Gelenke können auf diese Weise verwendet werden Sie wissen, Mann? Es ist einfach nicht das, wofür sie überhaupt sind. Ganz einfach, Sie benutzen einfach eine Transformation.dh die Radbaugruppe ist ein Kind des Chassis. das ist alles dazu. (nur '.Rotate' das Kind verwandeln - keine große Sache. – Fattie

+0

Es ist bemerkenswert, dass es unglaublich komplizierte Technik ist, ein Auto-Rig zu bauen - es dauert 1-2 Mann Jahre Arbeit. So ziemlich jedes Auto-Projekt in Unity verwendet nur die berühmte "Edy's Vehicle Physics" aus dem Asset-Store (oder einer von Edys neuen Konkurrenten !!) Es ist so schwierig, dass es wirklich keine Wiki-, Community-, usw. Bemühungen gibt.Außerdem hat sich mit Einheit 5 seit sie komplett geändert "Rad-Collider" geändert (die früher unglaublich bizarr waren und jetzt nur noch bizarr sind). – Fattie

Antwort

0

Ich vermute, dass Sie die Räder auf den Körper des Autos zu Eltern brauchen würde, und drehen Sie dann die relativen Räder an der Karosserie in Ihrem Skript.

Es wäre hilfreich, wenn Sie ein einfaches Unity-Projekt bereitstellen könnten, das heruntergeladen, getestet und optimiert werden könnte, um das Problem zu duplizieren und zu beheben. Ich bin gerne bereit, Ihnen zu helfen, wenn Sie eine einfache Demonstration des Problems senden möchten, damit ich versuchen kann, es zu beheben.

Verwandte Themen