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)


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

Если вашей проблемы нет, проверьте, может ли гравитация повлиять на ваше тело, проверив, является ли тело динамическим телом.

Я думаю, было бы лучше, если бы я прокомментировал это в вашем вопросе, но у меня недостаточно представителей для этого:/

Надеюсь, поможет :)

person Kalvin    schedule 07.08.2014
comment
Нет, это совсем не помогает, потому что, если бы вы были внимательны, читая мой вопрос, вы бы поняли, что у меня есть настройка гравитации, и тело тоже динамическое. Единственная проблема в том, что тело спит, когда я отключаю для него гравитацию. - person Narek; 08.08.2014