Я хотел, чтобы объект плавал на экране, сопротивляясь гравитации, а не двигался вообще.Таинственный фактор 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 = м.
Вопрос таинственный фактор . Где, черт возьми, это выглядит?
150 - 150 пунктов до 1 метра, они не смогли выполнить преобразование из метров в точки – Knight0fDragon