3ncrypt0 Geschrieben 28. April 2017 Melden Share Geschrieben 28. April 2017 Hi zusammen, ich habe einen Rigidbody, welchen ich durch neigen und drehen steuern kann - nun will ich aber, dass der Rigidbody auf der X & Z Achse wieder auf 0 laufen soll, OHNE das Y davon betroffen ist. Hier mal mein Script, welches ich im Inet gefunden habe: Vector3 predictedUp = Quaternion.AngleAxis( this.GetComponent<Rigidbody>().angularVelocity.magnitude * Mathf.Rad2Deg * stability / speed, this.GetComponent<Rigidbody>().angularVelocity ) * transform.up; Vector3 torqueVector = Vector3.Cross(predictedUp, Vector3.up); this.GetComponent<Rigidbody>().AddTorque(torqueVector * speed * speed); Der Rigidbody dreht sich zwar wieder auf der X und Z Achse zu null - aber wenn ich z.B. das Objekt vorher nach vorne+links geneigt habe, fing der Rigidbody an, sich nach rechts um die Y Achse zu drehen - ebenso anders rum. Und er hört nicht auf. Gegensteuern kann ich nur, wenn ich z.B. nach vorne+rechts steuer, wenn das Objekt sich nach rechts dreht -_-. Dann aber fängt er irgendwann an, sich nach links zu drehen. Ich habe auch schon versucht, Y in dem ScriptSnippet immer auf 0 zu setzen, da diese von der Stabilisation nicht betroffen sein sollte. Ohne Erfolg. Jemand eine Idee? Danke und VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 28. April 2017 Melden Share Geschrieben 28. April 2017 Hast du auch mal die Y Achse im Inspector blockiert? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
3ncrypt0 Geschrieben 28. April 2017 Autor Melden Share Geschrieben 28. April 2017 vor 50 Minuten schrieb malzbie: Hast du auch mal die Y Achse im Inspector blockiert? Ja habe ich - bringt mir allerdings nicht soviel, da ich auch über Y Steuern kann/muss. Mich wundert einfach, dass AddTorque auch bzw. vor allen Dingen Y betrifft, auch wenn ich Y in dem Vector durchgehend auf 0 setze... Btw: Ich steuer das Objekt mittels MoveRotation. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 28. April 2017 Melden Share Geschrieben 28. April 2017 Ich würde es in etwa so machen: float damping = 10.0f; float step = damping * Time.deltaTime; myRigidbody = this.GetComponent<Rigidbody>(); Quaternion targetRotation = Quaternion.Euler(0, myRigidbody.rotation.eulerAngles.y, 0); Quaternion currentRotation = Quaternion.RotateTowards(myRigidbody.rotation, targetRotation, step); myRigidbody.MoveRotation(currentRotation); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Denni173 Geschrieben 4. Mai 2017 Melden Share Geschrieben 4. Mai 2017 In der 3D Welt ist das ein gängiges Problem. Bei Rotationen kommt es häufig vor das sich das rotierende Objekt durch das Heading, Pitching und Rolling merkwürdig verhält, der gefürchtete Gimbal Lock also. Dies ist oftmals der Fall wenn Rotationen über Euler-Angles errechnet werden. Unity bietet aber vereinfachte Methoden an um dem entgegen zu wirken, in diesem Fall sind Quaternions wie der Vorschreiber schon gepostet hat die sinnvollste Methode, Deine Rotationen zu errechnen, da sie nicht vom Gimbal Lock betroffen sind. Kannst Du aber im Manual auch nachlesen: https://docs.unity3d.com/Manual/QuaternionAndEulerRotationsInUnity.html Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
3ncrypt0 Geschrieben 5. Mai 2017 Autor Melden Share Geschrieben 5. Mai 2017 Hi zusammen, komme leider erst jetzt dazu wieder etwas zu schreiben. Ich konnte das Problem lösen. Ich habe in dem Fall einfach einen PID Controller verwendet - Aber trotz allem hatte ich dann, sobald ich Roll+Pitch gleichzeitig verwendet habe, trotzdem noch diesen Yaw Effekt, der ja eigentlich auch logisch ist. Ich habe in meinem Projekt AngularDrag auf 0 stehen...das ist es schon. Gebe ich eine Kraft auf zwei Achsen aus, dann wirkt sich diese natürlich auch auf die dritte aus und ohne angularDrag fängt das Objekt sich an zu drehen, ohne zu stoppen... Danke und VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.