2017-01-26 50 views
1

我想要一個物體浮在屏幕上,抵抗重力,根本不移動。SpriteKit物理上的150個神祕因素。重力和力量

這是視圖的重力設置。

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

它被設置爲5米/秒^ 2向上。所以對象每秒向上加速5m

物體的質量被設置爲1.0公斤

self.physicsBody?.mass = 1.0 

我施加力到所述對象,以便它能抵抗重力。所以我做了以下。

func update(delta: TimeInterval) { 
    ... 

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

我施加-5N因爲我認爲施加到對象上的重力是1公斤* 5米/秒^ 2 = 5N。應用-5N將使物體加速-5m/s^2,由於重力而浮在屏幕上。

但它沒有奏效。相反,我必須這樣做。

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

-5乘以是-750。那麼,這個從哪裏來?爲什麼我必須應用-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。

問題是神祕因素。它到底是從哪裏來的?

+0

150是150點到1米,他們未能做到從米到點的轉換 – Knight0fDragon

回答

1

好吧,所有這些都是關於蘋果的錯誤文檔。 這裏有150

這似乎是有點笨的真相,但applyForce在測量((點*公斤)/秒^ 2),但重力加速度是牛頓((公斤*米)/秒^ 2)(儘管事實上它在文檔中被描述爲每秒鐘米數,每秒秒數!加速!)。乘以質量並獲得力量。

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

來吧,蘋果......它已經在那裏了4年。

+1

米每秒平方米和米每秒相當於在這種情況下,你不能指定使用的秒數150/1^2 = 150^1^1 – Knight0fDragon