Ich habe derzeit eine Ragdoll-Figur, die aus einem Elternknoten (ohne Physikkörper) besteht, und viele Kindknoten, die jeweils aus einem Kreiskörper bestehen. Die Kreise sind miteinander verbunden, um einen SKPhysicsJointPin
zwischen jedem Kreis verwendet wird, wie folgt:Falsches Verhalten mit SKPhysicsJointPin, wenn shouldEnableLimits true ist und lowAngleLimit und upperAngleLimit gesetzt
Jeder SKPhysicsJointPin
hat shouldEnableLimits = true
, und ich verwende momentan einen Wert von -0,05 und 0,05 für lowerAngleLimit
und upperAngleLimit
sind.
Das funktioniert ziemlich gut und verhindert, dass die Form von zu viel zu verformen, mit der Ausnahme, wenn die Figur geht upside-down als Ganze, wobei alle Gelenke plötzlich zu schrumpfen versuchen, etwa so:
- Siehe auch: Video
die Gelenke Vertrag sehr schnell zu, wenn die Zahl nach unten komplett auf dem Kopf ist. Wenn er sich wieder zurückdreht, normalisieren sich alle Gelenke wieder. Warum passiert das? Wie pflege ich die richtigen Winkel an den Gelenken?
Edit 1:
Ich habe gerade versucht, das Projekt in Objective-C, falls Umschreiben es wurde aufgrund eines seltsamen Swift Fehler; stellt sich heraus, dass sich dieses Problem immer noch in Objective-C manifestiert, also habe ich das Swift-Tag entfernt.
Meine beste Schätzung im Moment ist, dass der Winkel der Gelenke, relativ zur Welt, von SpriteKit falsch berechnet wird, wenn die Körper, an denen sie befestigt sind, mehr als 180 ° in beide Richtungen gedreht werden, und so falsche Winkel sind zu den zugrunde liegenden Box2D-Verbindungen übergeben werden.
Ich war mir nicht sicher, ob ich ständig die unteren und oberen Winkelgrenzen aktualisieren sollte, um den Weltwinkeln ihres Körpers zu entsprechen, aber es scheint nicht so zu sein, als wenn der Körper sehr nahe dran ist Auf den Kopf gestellt funktionieren die Gelenke nicht mehr richtig. Ich werde jedenfalls halten experimentieren ...
Edit 2:
Ich bin jetzt ziemlich sicher, dass das Problem tritt auf, weil SpriteKit ist (ich mit gutem Grund erraten) Modifizieren der zRotation
Wert zu halten, zwischen -180 ° und 180 °. Wenn sich der Knoten zum Beispiel im Uhrzeigersinn dreht und auf -180 ° auftrifft, springt SpriteKit automatisch wieder auf + 180 ° zurück. Ich bin ziemlich zuversichtlich, dass dieser Umgriff der Gelenke richtig verhalten verursacht, ich muß nur herausfinden, wie es zu begegnen ...
bearbeiten 3:
Ich habe die Beispielanwendung hochgeladen (einschließlich Video), die dieses Problem veranschaulicht, wie sie ursprünglich für die von Apple gestellt: Xcode Project/Video
Sie müssen längere PhysikBodies anstelle von Kreisen verwenden. Jeder Physikkörper sollte entweder einen Arm, Bein, Fuß, Torso, etc. darstellen. Ist Ihr eigener Körper aus einer Knochenstruktur, die Sie habe ich hier erstellt? – ZeMoon
Ich weiß, es ist keine genaue Darstellung des menschlichen Körpers, in diesem Fall ist es nicht zu sein! Ich bin meist nur mit dem seltsamen Verhalten der Gelenke im Moment betroffen. – Robert
haben Sie versucht, die Schwerkraft zu deaktivieren für die einzelnen Körper? – LearnCocos2D