Вы пытались использовать SKFieldNode ?
Имеет различные симуляции в отношении физики; например, он может создать
class func radialGravityField() -> SKFieldNode
Что делает следующее:
Создает узел поля, который ускоряет физические тела к узлу поля.
Редактировать:
Вот пример, сделанный в Playground того, как SKFieldNode работает с SKShapeNode
override func didMove(to view: SKView) {
let sampleNodeRadius: CGFloat = 15
let gravityNode = SKFieldNode.radialGravityField()
let sampleNode = SKShapeNode(circleOfRadius: sampleNodeRadius)
sampleNode.fillColor = .red
sampleNode.physicsBody = SKPhysicsBody(circleOfRadius: sampleNodeRadius)
gravityNode.minimumRadius = 1000
gravityNode.strength = 50
addChild(gravityNode)
addChild(sampleNode)
physicsWorld.gravity = CGVector(dx: 0, dy: 0)
sampleNode.position = CGPoint(x: -100, y: -100)
gravityNode.position = CGPoint(x: 0, y: 0)
}