SpriteKit物理学的神秘因素为150。重力和力量

时间:2017-01-26 14:52:14

标签: ios sprite-kit physics game-physics skphysicsbody

我想让一个物体浮在屏幕上,抵抗重力,根本不动。

这是视图的重力设置。

    self.physicsWorld.gravity = CGVector(dx: 0, dy: 5.0)

它向上设置为 5m / s ^ 2 。因此,物体每秒加速 5米会加速。

对象的质量设置为 1.0kg

    self.physicsBody?.mass = 1.0

我对物体施加了一个力,因此它可以抵抗重力。所以我做了以下几点。

func update(delta: TimeInterval) {
    ...

    let force = CGVector(dx: 0.0, dy: -5.0)
    self.physicsBody?.applyForce(force)
}

我应用了 -5N 因为我认为施加在物体上的重力是 1kg * 5m / s ^ 2 = 5N 。应用 -5N 会使对象加速 -5m / s ^ 2 ,在重力作用下漂浮在屏幕上。

但它没有用。相反,我必须这样做。

    let force = CGVector(dx: 0.0, dy: -5.0 * 150.0)

-5 乘以 150 -750 。那么, 150 来自哪里?为什么我必须应用 -750N 而不是 -5N 来使对象抵抗重力?

我还在不同的重力设置下测试了不同的质量和力量。

self.physicsBody?.mass = 2.0
let force = CGVector(dx: 0.0, dy: -5.0 * 150.0 * 2)
self.physicsWorld.gravity = CGVector(dx: 0, dy: 15.0)
self.physicsBody?.mass = 2.0
let force = CGVector(dx: 0.0, dy: -15.0 * 150.0 * 2)

他们都找到了。 F =毫安。

问题是 150 的神秘因素。它到底在哪里形成?

1 个答案:

答案 0 :(得分:1)

好的,所以这都是关于Apple的错误文档。 这是150的真相。

  

这似乎有点愚蠢,但applyForce以((点*千)/秒^ 2)测量,但重力加速度以牛顿((千米*米)/秒^ 2)为准(尽管事实如此)它在文档中被描述为每秒米数。每秒米数!加速度!)。乘以质量并获得力量。

https://stackoverflow.com/a/31868380/5752908

来吧,Apple ......已经有4年了。