2017-01-26 3 views
1

Я хотел, чтобы объект плавал на экране, сопротивляясь гравитации, а не двигался вообще.Таинственный фактор 150 на физике SpriteKit. Гравитация и силы

Это настройка силы тяжести на вид.

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

он установлен в 5 м/с^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, потому что я думал, что гравитационная сила, приложенная к объекту является 1кг * 5 м/с^2 = 5N. Применение -5N сделает объект ускоренным на -5m/s^2, плавающим на экране в результате с гравитацией.

Но это не сработало. Вместо этого я должен был это сделать.

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

-5 умноженное на 150 является -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 = м.

Вопрос таинственный фактор . Где, черт возьми, это выглядит?

+0

150 - 150 пунктов до 1 метра, они не смогли выполнить преобразование из метров в точки – Knight0fDragon

ответ

1

ОК, так что все дело в неправильной документации Apple. Вот правда 150.

это кажется немного глупым, но applyForce измеряется в ((точках * кило)/с^2), но ускорение силы тяжести в ньютонах ((кг * метр)/sec^2) (несмотря на то, что он описывается как метры в секунду в документации. Метры в секунду! Ускорение!). Умножьте его по массе и получите силу.

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

Давай, Apple ... Это было там в течение 4-х лет.

+1

метров в секунду в квадрате и метры в секунду в этом случае эквивалентны, вы не можете указать количество секунд, использованных 150/1^2 = 150^1^1 – Knight0fDragon

Смежные вопросы