【问题标题】:Expanding SKShapeNodes with Joint用 Joint 扩展 SKShapeNodes
【发布时间】:2015-01-20 03:06:43
【问题描述】:

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

【问题讨论】:

  • 我认为你需要为视图设置物理世界。
  • 我以为场景中有一个默认的物理世界?如果我没有关节,物体会按预期相互推开,但不会因为没有关节而收缩
  • 改变一个节点的大小并不一定会改变它的物理体。在你的 GameViewController 中,如果你设置了 skView.showsPhysics=true 那么你可以看到这个。

标签: ios swift sprite-kit skshapenode skphysicsjoint


【解决方案1】:

Okapi 的评论是正确的。更改 SKShapeNode 的路径不会更改附加物理体的大小。但是改变比例确实如此。

解决方案是使用

SKAction.scaleYTo(endScale, duration: time)

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

希望对您有所帮助。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多