У меня есть игра с прыжками. Есть некоторые предметы, которые, когда прыгун собирает, остаются в воздухе на 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);
. Это нормально?
m_world.SetAllowSleeping(false);
, при отладке отладки, она действительно спала, когда я установилbody->SetGravityScale(0);
. Я явно установилm_world.SetAllowSleeping(false);
, и он работал безbody->SetAwake(true);
. Кажется, что-то не так с компиляцией, и он не обновил исполняемый файл. - person Narek   schedule 08.08.2014