【问题标题】:Mysterious factor of 150 on SpriteKit's Physics. Gravity and ForcesSpriteKit 物理的神秘系数为 150。重力和力
【发布时间】:2017-01-26 14:52:13
【问题描述】:

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

这是视图的重力设置。

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

设置为 5m/s^2 向上。所以物体以每秒 5m 的速度向上加速。

物体的质量设置为 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=ma。

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

【问题讨论】:

  • 150 是 150 点到 1 米,他们没有做从米到点的转换

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


【解决方案1】:

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

这似乎有点愚蠢,但是 applyForce 以 ((points * kg) / sec ^ 2) 为单位,但重力加速度以牛顿 ((kilo * meter)/ sec ^ 2) 为单位(尽管事实上它在文档中被描述为每秒米。每秒米!加速度!)。乘以质量得到力。

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

来吧,Apple...它已经存在 4 年了。

【讨论】:

  • 米每秒平方和米每秒在这种情况下是等价的,你不能指定使用的秒数 150 / 1 ^ 2 = 150 ^ 1 ^ 1
猜你喜欢
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多