【发布时间】: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