使用Joint扩展SKShapeNodes

时间:2015-01-20 03:06:44

标签: ios swift sprite-kit skshapenode skphysicsjoint

我有两个我希望彼此连接的SKShapeNode节点。当我点击执行动作时,我希望两个节点扩展它们的高度,再次点击时我希望它们缩回。问题是两个节点没有按预期动画:

动画前:(未展开) enter image description here

动画后:(扩展) enter image description here

两个节点都在扩展,但似乎有一个节点在另一个节点之下。我想要发生的是他们彼此“推”。

override func didMoveToView(view: SKView) {
    let size = CGSize(width: view.frame.width, height: 100)

    let firstSection = SKShapeNode(rectOfSize: size)
    firstSection.physicsBody = SKPhysicsBody(rectangleOfSize: size)
    firstSection.fillColor = SKColor.purpleColor()
    firstSection.physicsBody?.affectedByGravity = false
    firstSection.position = CGPoint(x: 500, y: 400)
    firstSection.name = "section"
    self.addChild(firstSection)




    let secondSection = SKShapeNode(rectOfSize: size)
    secondSection.fillColor = SKColor.blueColor()
    secondSection.physicsBody = SKPhysicsBody(rectangleOfSize: size)
    secondSection.physicsBody?.affectedByGravity = false
    secondSection.position = CGPoint(x: 500, y: 300)
    secondSection.name = "section"
    self.addChild(secondSection)

    let joint = SKPhysicsJointSpring.jointWithBodyA(firstSection.physicsBody, bodyB: secondSection.physicsBody, anchorA: firstSection.position, anchorB: secondSection.position)

    self.physicsWorld.addJoint(joint)
}

1 个答案:

答案 0 :(得分:0)

霍加皮的评论是正确的。更改SKShapeNode的路径不会更改附加物理主体的大小。然而,改变规模确实如此。

解决方案是使用

SKAction.scaleYTo(endScale, duration: time)

Okapi也是正确的,如果你想看看物理模拟中实际发生了什么,你应该将SKViews showsPhysics属性设置为true。

希望有所帮助。

编辑:我刚刚意识到您正在使用SKShapeNode,而不是SKSpriteNode。缩放物理主体仍然适用,但我不确定您如何调整节点大小(缩放/调整路径大小?)