Ios7 在两个SKPhysicsBody对象之间创建SKPhysicsJoint是否会禁用它们之间的碰撞检测?

Ios7 在两个SKPhysicsBody对象之间创建SKPhysicsJoint是否会禁用它们之间的碰撞检测?,ios7,box2d-iphone,sprite-kit,Ios7,Box2d Iphone,Sprite Kit,我注意到以下几点: 如果我创建了一个具有物理边界(bodyWithEdgeLoopFromRect)的场景,以及两个分别具有圆形实体物理体(bodyWithCircleOfRadius)的节点,则在将这两个节点添加到场景中时,它们可能会相互碰撞,并与场景的边界发生碰撞,正如预期的那样 但是,如果在两个节点之间添加任何类型的关节,则关节约束在它们之间保持不变,并且它们仍然可以与场景的边界碰撞。但它们不再相互碰撞 这对我来说似乎是一个错误。我希望物理体之间的任何连接都是除了它们的基本碰撞机制之外的。

我注意到以下几点:

  • 如果我创建了一个具有物理边界(
    bodyWithEdgeLoopFromRect
    )的场景,以及两个分别具有圆形实体物理体(
    bodyWithCircleOfRadius
    )的节点,则在将这两个节点添加到场景中时,它们可能会相互碰撞,并与场景的边界发生碰撞,正如预期的那样
  • 但是,如果在两个节点之间添加任何类型的关节,则关节约束在它们之间保持不变,并且它们仍然可以与场景的边界碰撞。但它们不再相互碰撞
  • 这对我来说似乎是一个错误。我希望物理体之间的任何连接都是除了它们的基本碰撞机制之外的。有没有人经历过类似的行为,或者有任何关于我做错了什么的暗示


    (顺便说一句,我之所以用Box2d标记它,是因为SpriteKit使用Box2d,所以这可能是我不知道的Box2d已知问题)。

    是的,这是Box2d默认行为。我相信在box2d中,您可以覆盖它,但建议不要覆盖它。原因是关节上的碰撞体将对抗关节限制,反之亦然,从而在模拟中引入不稳定性。其结果是,两个身体为了解决关节约束和碰撞响应而战斗,会引入额外的力。

    谢谢。但是,你如何在box2D中建模,比如说,用绳子连接的两个球?我想你会使用绳子接头,但不幸的是,它没有包含在Sprite工具包中。它是:SKPhysicsJointLimit,这确实是我正在使用的接头类型。但问题是,它只有maxLength,所以通过它约束的两个节点不能移动到比maxLength更远的地方,但它们仍然可以移动到一起,并且彼此相交,这就是我试图避免的。现在我正在节点中心锚定连接。也许我应该把它们锚定在它们边界的边缘?