我想让一个物体浮在屏幕上,抵抗重力,根本不动。
这是视图的重力设置。
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 的神秘因素。它到底在哪里形成?
答案 0 :(得分:1)
好的,所以这都是关于Apple的错误文档。 这是150的真相。
这似乎有点愚蠢,但applyForce以((点*千)/秒^ 2)测量,但重力加速度以牛顿((千米*米)/秒^ 2)为准(尽管事实如此)它在文档中被描述为每秒米数。每秒米数!加速度!)。乘以质量并获得力量。
https://stackoverflow.com/a/31868380/5752908
来吧,Apple ......已经有4年了。