我有两个我希望彼此连接的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)
}
答案 0 :(得分:0)
霍加皮的评论是正确的。更改SKShapeNode的路径不会更改附加物理主体的大小。然而,改变规模确实如此。
解决方案是使用
SKAction.scaleYTo(endScale, duration: time)
Okapi也是正确的,如果你想看看物理模拟中实际发生了什么,你应该将SKViews showsPhysics属性设置为true。
希望有所帮助。
编辑:我刚刚意识到您正在使用SKShapeNode,而不是SKSpriteNode。缩放物理主体仍然适用,但我不确定您如何调整节点大小(缩放/调整路径大小?)