2012-01-22 6 views
2

落球の基本例を作成しましたが、落下中にオブジェクトが加速していない理由を少し混乱させています。それは私が期待するものではない一定の速度で移動しています。これはBox2Dを使用している私の最初の日です。私は何か基本的なものを見逃していると思っていますが、それを理解することはできません。Box2D - 落下するボディが重力で加速しない

public PhysicsWorld() { 
    // Step 1: Create Physics World Boundaries 
    Vec2 gravity = new Vec2(0, 20); 
    boolean doSleep = true; 
    world = new World(gravity, doSleep); 

    // Dynamic Body 
    BodyDef bodyDef = new BodyDef(); 
    bodyDef.type = BodyType.DYNAMIC; 
    bodyDef.position.set(100, 100); 
    body = world.createBody(bodyDef); 
    MassData md = new MassData(); 
    md.mass = 5; 
    body.setMassData(md); 
    PolygonShape dynamicBox = new PolygonShape(); 
    dynamicBox.setAsBox(1, 1); 
    FixtureDef fixtureDef = new FixtureDef(); 
    fixtureDef.shape = dynamicBox; 
    fixtureDef.density = 1; 
    fixtureDef.friction = 0.3f; 
    body.createFixture(fixtureDef); 

    velocityIterations = 6; 
    positionIterations = 2; 

} 

public void update() { 
    world.step(timeStep, velocityIterations, positionIterations); 
    Log.i("body", "x: " + body.getPosition().x + " y: " + body.getPosition().y); 
} 

出力:あなたのフレームレートは40fps、タイムステップしまうの場合

01-22 21:17:20.750: I/body(7698): x: 100.0 y: 102.0 
01-22 21:17:20.777: I/body(7698): x: 100.0 y: 104.0 
01-22 21:17:20.796: I/body(7698): x: 100.0 y: 106.0 
01-22 21:17:20.824: I/body(7698): x: 100.0 y: 108.0 
01-22 21:17:20.847: I/body(7698): x: 100.0 y: 110.0 

私は重力が各反復を適用することを期待してボールを増加させるには、Y.

+1

私はこのすべてを理解するためにWorld.step()メソッドが必要だと思います。 –

+0

timeStepの値は何ですか? –

+0

私のフレームレートは40です。このマニュアルの最初の例でも、同様の出力があります。http://www.box2d.org/manual.htmlなぜ、加速度重力が原因で値が考慮されていないのですか? – Moz

答えて

1

速度はエンジンによって制限され、適切なワールド座標を使用していません。それを1キロメートル秒のシステムと考えてください。あなたは、1/40メートル/秒、または毎秒80メートルに2メートル落ちる1メートルのボックスを持っています。それはかなり速いです。

関連する問題