【发布时间】: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