0

互いに接続したい 2 つの SKShapeNode ノードがあります。タップしてアクションを実行すると、2 つのノードの高さが拡張され、もう一度タップすると収縮します。問題は、2 つのノードが期待どおりにアニメーション化されないことです。

アニメ化前:(未展開) ここに画像の説明を入力

アニメーション後: (拡大) ここに画像の説明を入力

両方のノードが拡大していますが、一方が他方の下にあるように見えます。私が望んでいるのは、彼らがお互いを「押しのける」ことです。

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)
}
4

1 に答える 1

0

オカピさんのコメントは正しいです。SKShapeNode のパスを変更しても、接続されている物理ボディのサイズは変更されません。ただし、スケールの変更は行います。

解決策は使用することです

SKAction.scaleYTo(endScale, duration: time)

物理シミュレーションで実際に何が起こっているかを確認したい場合は、SKViews の showsPhysics プロパティを true に設定する必要があるという点でも、Okapi は正しいです。

お役に立てば幸いです。

編集: SKSpriteNode ではなく、SKShapeNode を使用していることに気付きました。スケーリング物理体は引き続き適用されますが、ノードのサイズをどのように変更しているのかわかりません (パスのスケーリング/サイズ変更?)

于 2015-01-21T11:08:35.090 に答える