Имам игра със скачане. Има някои предмети, които когато скачащият събере, той остава във въздуха за 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