SpriteKit:SKPhysicsJointLimit 不遵守 'maxLength'
SpriteKit: SKPhysicsJointLimit not respecting 'maxLength'
我试图在 SpriteKit 中创建一个链状结构,但我无法理解 SKPhysicsJointLimit
的 maxLength
属性 的行为。好像什么都没做。
没有解决我的问题。
根据documentation,maxLength
是限制关节连接的两个物理体之间允许的最大距离。
然而,我的两个节点的方向变得比它们的 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) 可能是“精灵的中心”或类似的东西,但这对于关节来说是不正确的。
我试图在 SpriteKit 中创建一个链状结构,但我无法理解 SKPhysicsJointLimit
的 maxLength
属性 的行为。好像什么都没做。
根据documentation,maxLength
是限制关节连接的两个物理体之间允许的最大距离。
然而,我的两个节点的方向变得比它们的 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) 可能是“精灵的中心”或类似的东西,但这对于关节来说是不正确的。