1

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

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

我尝试将锚点设置为 (0,0) 和 (0,2),但有些东西出了问题,尽管我看到关节没有任何影响。

我想让圆圈平滑地相互推动,好像弹簧的长度增加了一样。

如果我将一个圆圈“传送”到 2 的距离,然后将弹簧固定到它上面,一切都会正常工作,但是让一个物理对象传送会导致其他错误,正如你可以猜到的那样。

4

1 回答 1

0

在添加关节之前,我将第二个对象“传送”到所需位置,然后添加关节,然后“传送”回原始位置。

这是代码片段:

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 有一个可以随时间更改的“长度”参数。

于 2015-05-12T13:29:28.823 回答