如何在 sprite Kit 场景中更改重力源

How to change gravity source in sprite Kit scene

我希望所有受重力影响的 SKNode 都转到我的 SKScene 视图中的水平线,而不是底部。像一条线一样的东西是重力杆。有什么办法吗?

您尝试过使用 SKFieldNode 吗?

它有各种关于物理的模拟;例如,它可以创建

class func radialGravityField() -> SKFieldNode

执行以下操作:

Creates a field node that accelerates physics bodies toward the field node.

编辑:

这是在 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)
   }