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

时间:2019-05-13 08:17:24

标签: ios swift sprite-kit 2d

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

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用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)
   }