Я играю с Box2D в первый раз. Я создал простое тестовое приложение, которое состоит из статического тела, представляющего землю, и маленькую динамическую коробку, которая падает и приземляется на первую. Затем я решил поэкспериментировать с силами, назначив ключ, чтобы заставить к нему применить усилие вверх. Он работает так, как ожидалось, но только в том случае, если я убежу, чтобы вызвать силу до того, как ящик был полностью неподвижен в течение нескольких мгновений. Ожидается ли такое поведение?ApplyForce неэффективен после того, как пострадавшее тело все еще какое-то время
FWIW, вот как определяются тело, форма и крепление динамической коробке:
b2BodyDef body_def;
body_def.type = b2_dynamicBody;
body_def.position.Set(position.x, position.y);
body = world.CreateBody(&body_def);
b2PolygonShape shape;
shape.SetAsBox(size.width/2.0f, size.height/2.0f);
b2FixtureDef fixture_def;
fixture_def.shape = &shape;
fixture_def.density = 1.0f;
fixture_def.friction = 0.3f;
Это код, который применяет подъемную силу:
b2Body* body = box.b2_body();
body->ApplyForce(b2Vec2(0.0f, 15.0f), body->GetPosition(), false);
И это моделирование шаг вызова:
world.Step(time_step, velocity_iterations, position_iterations);
где:
time_step
1/60velocity_iterations
6; иposition_iterations
является 2.
Если необходима дополнительная информация, просто дайте мне знать.
спасибо.