Spritekit改变引力

时间:2017-09-17 00:05:05

标签: ios swift sprite-kit physics skspritenode

我一直试图通过使用

来改变引力
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)

1 个答案:

答案 0 :(得分:1)

它适用于didMove因为对象没有施加任何力,因此它们仍然是

当您在游戏中改变重力时,物体仍然处于前一次引力的运动中 - 改变重力仅影响/未来/施加在物体上的力。

您需要更改重力,以及您希望在触摸功能中受影响的节点的速度,以获得所需的效果。

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

spaceship.physicsBody!.velocity.dy = 0