SpriteKit:SKPhysicsJointLimit 不遵守 'maxLength'

SpriteKit: SKPhysicsJointLimit not respecting 'maxLength'

我试图在 SpriteKit 中创建一个链状结构,但我无法理解 SKPhysicsJointLimitmaxLength 属性 的行为。好像什么都没做。

没有解决我的问题。

根据documentationmaxLength限制关节连接的两个物理体之间允许的最大距离。

然而,我的两个节点的方向变得比它们的 maxLength 值更远。的确,我将它们的 初始位置 设置为比 maxLength 更远 - 但我希望节点在模拟过程中拉到一起,就好像通过有弹性的绳子相反,节点仍然相距很远。

所以,这里有一些代码在两个 SKSpriteNode 之间设置一个关节。

let screen = UIScreen.main.bounds
let bodyA = SKSpriteNode(imageNamed: "box.png")
let bodyB = SKSpriteNode(imageNamed: "box.png")

bodyA.size = CGSize(width: 20, height: 20)
bodyB.size = CGSize(width: 20, height: 20)
        
bodyA.position = CGPoint(x: screen.width*0.4, y: screen.height*0.8)
bodyB.position = CGPoint(x: screen.width*0.6, y: screen.height*0.8)
        
bodyA.physicsBody = SKPhysicsBody(circleOfRadius: 20)
bodyB.physicsBody = SKPhysicsBody(circleOfRadius: 20)

addChild(bodyA)
addChild(bodyB)

let pinJoint = SKPhysicsJointLimit.joint(withBodyA: bodyA.physicsBody!, bodyB: bodyB.physicsBody!, anchorA: CGPoint(x: 0.5, y: 0.5), anchorB: CGPoint(x: 0.5, y: 0.5))

//This doesn't seem to do anything:
pinJoint.maxLength = 5.0

scene?.physicsWorld.add(pinJoint)

在模拟中,很明显一个连接两个节点的物理关节——只是节点之间的距离比应有的距离远得多。

为什么我的 maxLength 值没有改变我的两个节点的行为,我该如何解决这个问题?我有什么不明白的?

感谢您的意见!

确保锚点位于场景坐标中,如文档中所述。 (0.5, 0.5) 可能是“精灵的中心”或类似的东西,但这对于关节来说是不正确的。