2013-11-21 4 views
0

Я играл с коробкой kripken box2d, когда у меня была пара проблем. Я выбрал эту вилку, потому что она кажется самой быстрой и самой используемой.Box2d.js импульсы/силы и начальное положение

  1. API определяет положение на bodyDef, но вы должны «дать ему на тело».
  2. Силы, импульсы, ... прикрепляются к телу, давая неожиданную постоянную скорость.

Есть ли у кого-нибудь эти поведения раньше? У кого-нибудь есть намеки?

Это происходит из сложного приложения, но я упростил для демонстрации:

<html> 
<head> 
    <script src="http://kripken.github.io/box2d.js/box2d.js"></script> 
</head> 
<body> 
<script> 
    // gravity 0 for top view scene 
    var world = new Box2D.b2World(new Box2D.b2Vec2(0, 0), true); 

    var bodyDef = new Box2D.b2BodyDef(); 
    bodyDef.set_type(Box2D.b2_dynamicBody); 
    bodyDef.set_position(40,40); 

    var body = world.CreateBody(bodyDef); 
    // ISSUE 1 
    // without these two lines real position is 0,0 
    body.GetPosition().set_x(40); 
    body.GetPosition().set_y(40); 

    var dynamicBox = new Box2D.b2PolygonShape(); 
    dynamicBox.SetAsBox(5.0, 5.0); 

    var fixtureDef = new Box2D.b2FixtureDef(); 
    fixtureDef.set_shape(dynamicBox); 
    fixtureDef.set_density(1); 
    fixtureDef.set_friction(0.8); 
    fixtureDef.set_restitution(0.5); 

    body.CreateFixture(fixtureDef); 

    //ISSUE 2 
    // Never ending movements 
    //body.ApplyLinearImpulse(new Box2D.b2Vec2(5,5),body.GetWorldCenter()); 
    body.ApplyForce(new Box2D.b2Vec2(50,50),body.GetWorldCenter()); 

    function update() { 
     world.Step(1/30, 10, 10); 
     world.ClearForces();  
     console.log(body.GetPosition().get_x()+","+body.GetPosition().get_x()); 
    } 

    setInterval(update, 1000/60); 

</script> 
</body> 
</html> 

ответ

0

По вопросу 1, set_position следует ожидать параметр b2Vec2. Попробуйте следующее:

bodyDef.set_position(new b2Vec2(40, 40)); 
0

У меня появилось больше проблем, поэтому я, наконец, переключился на box2dweb. Старые, но более проверенные и более стабильные.

Смежные вопросы