SKPhysicsJointPin ограничивает сбой, когда персонаж перевернут

Сейчас я создаю движение ногой, используя два физических тела; тело и нога. Я использую штифтовое соединение, чтобы соединить два тела, применяю ограничения угла, чтобы ограничить движение ноги, и прикладываю импульс крутящего момента, чтобы ударить ногу. Все работает хорошо.

Тем не менее, мой персонаж также имеет возможность прыгать (просто применяя восходящий импульс к телу), и это, кажется, вызывает проблемы с пределами моего штифтового сустава. Ограничения начинают сбиваться, когда персонаж перевернут, особенно когда zRotation персонажа перемещается между PI и -PI, то есть в любую сторону от прямого переворота.

Это кажется странным, потому что пределы суставов хорошо работают, когда вы стоите в правильном положении. Кто-нибудь когда-нибудь видел подобную проблему при использовании объекта SKPhysicsJointPin с установленными ограничениями?

Для полноты картины физические тела представляют собой простые bodyWithRectangleOfSize: тела, узел ноги является дочерним элементом узла тела (поэтому вращается вместе с ним), и вот как я настраиваю шарнирное соединение:

CGPoint topOfLegAnchor = CGPointMake(0.0, [leg size].height / 2.0);
topOfLegAnchor = [[self scene] convertPoint:topOfLegAnchor fromNode:leg];
SKPhysicsJointPin *pinnedJoint = [SKPhysicsJointPin jointWithBodyA:[body physicsBody]
                                                             bodyB:[leg physicsBody]
                                                            anchor:topOfLegAnchor];
[pinnedJoint setShouldEnableLimits:YES];
[pinnedJoint setLowerAngleLimit:-M_PI_2];
[pinnedJoint setUpperAngleLimit:0.0];

person Andy Barnard    schedule 29.08.2014    source источник
comment
Что значит начать глючить? Как оно себя ведет?   -  person 0x141E    schedule 30.08.2014
comment
Похоже, это связано с моим недавним вопросом: неправильное поведение со skphysicsjointpin, когда shouldenablelimits имеет значение true и l">stackoverflow.com/questions/25555113/. Я думаю, что сбои возникают, когда Sprite Kit автоматически нормализует zRotation для узлов; он не принимает во внимание углы сустава. Вероятно, это проблема со Sprite Kit, и я сообщил об ошибке в Apple.   -  person Robert    schedule 02.09.2014
comment
Проблема Роберта, похоже, идентична моей, поэтому см. объяснение «глюка». Спасибо, Роберт.   -  person Andy Barnard    schedule 07.09.2014
comment
есть ответы от Apple?   -  person JakubKnejzlik    schedule 15.11.2015