0

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

动画前:(未展开) 在此处输入图像描述

动画后:(展开) 在此处输入图像描述

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

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)
}
4

1 回答 1

0

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

解决方案是使用

SKAction.scaleYTo(endScale, duration: time)

Okapi 也是正确的,如果您想查看物理模拟中实际发生的情况,您应该将 SKViews 的 showPhysics 属性设置为 true。

希望这会有所帮助。

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

于 2015-01-21T11:08:35.090 回答