1

私は Swift SpriteKit にロープを実装しようとしていて、それに物理学を追加しようとしています。位置はすべてに適していますが、接続しません。プレイすると、「ホルダー」である最初のものを除いてすべて落ちます。これが私のコードです:

    // create rope holder
    let chainHolder = SKSpriteNode(imageNamed: "chainHolder")

    chainHolder.position.y = self.frame.maxY - chainHolder.size.height

    chainHolder.physicsBody = SKPhysicsBody(circleOfRadius: chainHolder.size.width / 2)
    chainHolder.physicsBody?.dynamic = false
    //chainHolder.physicsBody?.allowsRotation = true

    chains.append(chainHolder)
    addChild(chainHolder)

    // add each of the rope parts
    for i in 0...5 {

        let chainRing = SKSpriteNode(imageNamed: "chainRing")
        let offset = chainRing.size.height * CGFloat(i + 1)
        chainRing.position = CGPointMake(chainHolder.position.x, chainHolder.position.y - offset)
        chainRing.name = String(i)

        chainRing.physicsBody = SKPhysicsBody(rectangleOfSize: chainRing.size)
        //chainRing.physicsBody?.allowsRotation = true

        chains.append(chainRing)
        addChild(chainRing)
    }

    // set up joints between rope parts
    for i in 1...5 {

        var nodeA = chains[i - 1]
        var nodeB = chains[i]
        var joint = SKPhysicsJointPin.jointWithBodyA(nodeA.physicsBody, bodyB: nodeB.physicsBody,
            anchor: CGPointMake(CGRectGetMidX(nodeA.frame), CGRectGetMinY(nodeA.frame)))

        physicsWorld.addJoint(joint)
    }
4

1 に答える 1

0

シーンのアンカーポイントを(0.5、0.5)に設定していたため、問題が発生したことがわかりました。(0, 0) のままにしておくと、すべて問題ありません。

于 2015-03-29T15:00:13.150 に答える