我现在正在使用两个物理机构创建一个腿踢动作;一个身体和一条腿。我使用针接头连接两个身体,施加角度限制以限制腿部运动,并施加扭矩冲击来踢腿。一切顺利。
然而,我的角色也有能力跳跃(只是向身体施加向上的冲动),这似乎导致了我的针接头限制的问题。当角色颠倒时,限制开始出现问题,特别是当角色的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];