Box2D SetGravityScale не работи, когато го върна на 1

Имам игра със скачане. Има някои предмети, които когато скачащият събере, той остава във въздуха за 3 секунди и след това пада. За това направих следното:

// to stop the body in the air
body->SetGravityScale(0);
body->SetLinearDamping(7); // don't want abrupt stopping

За да накарам тялото да падне отново от въздуха обратно на земята след 3 секунди, правя:

body->SetGravityScale(1);                
body->SetLinearDamping(0);

Но продължава да стои във въздуха. Само когато приложа малък импулс надолу, той започва да пада. Защо?

РЕДАКТИРАНЕ: Изрично съм задал:

m_world.SetAllowSleeping(false);

но така или иначе, трябва да приложа линеен импулс, за да го накарам да отстъпи или просто да направя:

body->SetAwake(true);

Оказва се, че тялото спи, дори ако m_world.SetAllowSleeping(false);. Това добре ли е?


person Narek    schedule 07.08.2014    source източник
comment
Първото нещо, което бих направил, е да погледна дисплея за изтегляне на грешки, след което можете да ни кажете дали тялото всъщност спи или не.   -  person iforce2d    schedule 07.08.2014
comment
Когато коментирах реда, съдържащ m_world.SetAllowSleeping(false); при изчертаване на грешки, той наистина заспа, когато зададох body->SetGravityScale(0);. Изрично съм задал m_world.SetAllowSleeping(false); и работи без body->SetAwake(true);. Изглежда нещо, когато не е наред с компилацията и не е актуализирал изпълнимия файл.   -  person Narek    schedule 08.08.2014


Отговори (1)


Проверете своя свят и вижте дали има гравитация, дори и с gravityScale = 1 тялото ви няма да падне без гравитация в света.

Ако проблемът ви не е там, проверете дали тялото ви може да бъде засегнато от гравитацията, проверете дали тялото е динамично тяло.

Мисля, че би било най-добре да го коментирам във вашия въпрос, но нямам достатъчно представител за това :/

Надявам се да помогне :)

person Kalvin    schedule 07.08.2014
comment
Не, изобщо не помага, защото ако бяхте внимателни, докато четехте въпроса ми, ще разберете, че имам гравитационна настройка и тялото също е динамично. Единственият проблем е, че тялото спи, когато изключа гравитацията за него. - person Narek; 08.08.2014