Spritekit 改变重力

Spritekit Changing Gravity

我一直在尝试使用

来改变重力
override func touchesBegan(_ touches: Set<UITouch>, with event: 
UIEvent?) {
self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
}

但这似乎根本没有改变引力。当我在 didMove 函数中使用相同的代码时,它起作用了。

编辑 1:

这是我的 SKSpriteNode 的代码:

spaceship = SKSpriteNode(imageNamed: "Spaceship")

    spaceship.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
    spaceship.setScale(0.1)
    spaceship.physicsBody?.isDynamic = true
    spaceship.physicsBody = SKPhysicsBody(circleOfRadius: spaceship.size.width / 2);


    addChild(spaceship)

它在 didMove 中有效,因为对象没有施加力,因此它们仍然是

当你在游戏中途改变重力时,物体仍然在先前重力的作用下运动——改变重力只会影响/未来/施加到物体上的力。

您需要在触摸功能中更改您想要影响的节点的重力和速度以获得所需的效果。

此外,为简洁起见,您可以直接访问 dy 值,而无需为其分配新的 CGVector -- 这也有助于提高性能。

spaceship.physicsBody!.velocity.dy = 0