Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带接头的膨胀型楔块_Ios_Swift_Sprite Kit_Skshapenode_Skphysicsjoint - Fatal编程技术网

Ios 带接头的膨胀型楔块

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)

我有两个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)
}

奥卡皮的评论是正确的。更改SKShapeNode的路径不会更改附着的物理实体的大小。然而,改变比例确实是如此

解决办法是使用

SKAction.scaleYTo(endScale, duration: time)
Okapi的另一个正确之处是,如果您想查看物理模拟中实际发生的情况,应该将SKViews showsPhysics属性设置为true

希望这会有帮助


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

我认为需要为视图设置物理世界。我以为场景中有默认的物理世界?如果没有关节,对象会像预期的那样彼此推开,但不会因为没有关节而收缩。更改节点的大小不一定会更改其物理体。在GameViewController中,如果将skView.showsPhysics设置为true,则可以看到这一点。