Как перетащить SKSpriteNode с помощью Pin Joints - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу иметь возможность подобрать SKSpriteNode и фактически «свисать» его пальцем. Я экспериментировал с SKPhysicsJointPin, но, похоже, он не дает желаемого результата.

Вот код, который я использую:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let location = touch.location(in: self)

            if !BeingMoved {
                BeingMoved = true
                TempDragNode.name = "TempDragNode"
                TempDragNode.size = CGSize(width: 44, height: 44)
                TempDragNode.physicsBody = SKPhysicsBody(circleOfRadius: 44)

                TempDragNode.physicsBody?.affectedByGravity = false
                addChild(TempDragNode)

                TempDragNode.physicsBody?.allowsRotation = false

                let PositionX = CGPoint(x: TempDragNode.position.x, y: TempDragNode.position.y+(TempDragNode.frame.height/2))

                let PinJoint = SKPhysicsJointPin.joint(withBodyA: (childNode(withName: "Nutty")?.physicsBody)!, bodyB: TempDragNode.physicsBody!, anchor: PositionX)

                scene?.physicsWorld.add(PinJoint)


            }

            TempDragNode.position = location
        }
}
...