我可以在节点外设置 SKPhysicsJoint 的锚点吗?

Can I set anchor point of SKPhysicsJoint outside node?

假设我有两个圆圈,分别位于 (0,0) 和 (0,1)。

我在它们之间有一个 SKPhysicsJoint,它运行良好,现在我想在运行时以 2 的距离将它们分开,这意味着当物理在游戏中运行时。我怎样才能做到这一点?

我试过将锚点设置为 (0,0) 和 (0,2),但出现了问题,虽然我看到关节没有任何影响。

我希望圆圈之间可以平滑地相互推动,就好像 spring 的长度增加了一样。

如果我绕 'teleport' 到 2 的距离然后将 spring 锚定到它,一切正常,但是让物理对象传送会导致其他错误,您可以猜到。

在添加关节之前我'teleported'把第二个物体放到想要的位置,然后添加关节然后'teleported'回到原来的位置。

这是代码片段:

SKSpriteNode* node1 = [_bodies objectAtIndex:loop];
     SKSpriteNode* node2 = [_bodies objectAtIndex:loop-1];
     CGPoint prev1 = node1.position;
     CGPoint prev2 = node2.position;
     node1.position = [((NSValue*)[positions objectAtIndex:loop]) CGPointValue];
     node2.position = [((NSValue*)[positions objectAtIndex:loop-1]) CGPointValue];
     [self AttachPoint:node1  secondPoint:node2 pos1:node1.position pos2:node2.posiiton] ;
     node1.position = prev1;
     node2.position = prev2;

它按原样工作,但我不确定它的效率如何。我希望 SKPhysicsJointSpring 有一个可以随时间改变的 'length' 参数。