SKSpritenode: физическая масса не меняет ускорение под действием силы тяжести

У меня тут проблема. Я использую SKSpriteNode для создания различных объектов в мире. И я применил гравитацию, т.е. SkScene.

Итак, проблема здесь в том, что когда я создаю SKSPriteNode и придаю массу его физическому телу, тогда он ведет себя одинаково каждый раз. Например:

Если я поставлю массу равной 0, то она также упадет вниз (не должно, потому что масса равна нулю, поэтому, согласно правилам физики, тело не должно падать с массой 0).

Теперь, если я изменю массу на 10, 100 или даже 1000, она упадет с той же скоростью, что и при нулевой массе.

Есть ли кто-нибудь с такой же проблемой? Или кто-нибудь может помочь мне с этим?


person Jaydatt    schedule 05.03.2014    source источник
comment
nssdc.gsfc.nasa.gov/planetary/lunar/apollo_15_feather_drop.html   -  person Mike Pollard    schedule 05.03.2014


Ответы (3)


Думаю, это просто ньютоновская физика - ускорение под действием силы тяжести не зависит от массы объекта. Гравитационная сила пропорциональна массе, но не ускорению.

Случай с нулевой массой странный, но, вероятно, это просто условность физического движка. Я предполагаю, что он вообще не смотрит на массу во время этих вычислений. Масса становится полезной при работе с другими взаимодействиями, например. столкновения или пружины.

person stefandouganhyde    schedule 05.03.2014
comment
РЖУ НЕ МОГУ! Лучший ответ! Блин, хотел бы я еще раз добавить +1. - person Fogmeister; 05.03.2014

Хотя масса не влияет на гравитацию (как яростно указывали люди), я предполагаю, что вы пытаетесь заставить гравитацию оказывать различное влияние на различные типы узлов в вашем проекте.

Вы можете добиться того же, изменив значения friction, linearDamping или angularDamping SKPhysicsBody.

person ZeMoon    schedule 05.03.2014

На случай, если кто-нибудь наткнется на него. Чтобы отключить гравитацию для определенных спрайтов, используйте

physicsBody.affectedByGravity = false
person Pavel Stepanov    schedule 10.12.2017