Ios 带接头的膨胀型楔块
我有两个SKShapeNode节点,我想彼此连接。当我点击以执行动作时,我希望两个节点扩展其高度,再次点击时,我希望它们收缩。问题是这两个节点的动画设置不符合预期: 动画前:(未展开) 动画后:(展开) 两个节点都在扩展,但似乎一个节点在另一个节点下。我想发生的是他们互相“推开”Ios 带接头的膨胀型楔块,ios,swift,sprite-kit,skshapenode,skphysicsjoint,Ios,Swift,Sprite Kit,Skshapenode,Skphysicsjoint,我有两个SKShapeNode节点,我想彼此连接。当我点击以执行动作时,我希望两个节点扩展其高度,再次点击时,我希望它们收缩。问题是这两个节点的动画设置不符合预期: 动画前:(未展开) 动画后:(展开) 两个节点都在扩展,但似乎一个节点在另一个节点下。我想发生的是他们互相“推开” override func didMoveToView(view: SKView) { let size = CGSize(width: view.frame.width, height: 100)
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)
}
奥卡皮的评论是正确的。更改SKShapeNode的路径不会更改附着的物理实体的大小。然而,改变比例确实是如此 解决办法是使用
SKAction.scaleYTo(endScale, duration: time)
Okapi的另一个正确之处是,如果您想查看物理模拟中实际发生的情况,应该将SKViews showsPhysics属性设置为true
希望这会有帮助
编辑:我刚刚意识到您使用的是SKShapeNode,而不是SKSpriteNode。缩放物理体仍然适用,但我不确定如何调整节点的大小(缩放/调整路径?我认为需要为视图设置物理世界。我以为场景中有默认的物理世界?如果没有关节,对象会像预期的那样彼此推开,但不会因为没有关节而收缩。更改节点的大小不一定会更改其物理体。在GameViewController中,如果将skView.showsPhysics设置为true,则可以看到这一点。