2

私はjbox2dをいじり回していて、体のx速度が世界の重力の影響を受けたときに驚きました。これが私のコードです:

    //create world
    Vec2 gravity = new Vec2(0, 1);
    boolean sleep = true;
    world = new World(gravity, sleep);
    //create wheel
    BodyDef wheelBodyDef = new BodyDef();
    wheelBodyDef.type = BodyType.DYNAMIC;
    wheelBody = world.createBody(wheelBodyDef);
    CircleShape circleShape = new CircleShape();
    FixtureDef wheelFixtureDef = new FixtureDef();
    wheelFixtureDef.shape = circleShape;
    Fixture wheelFixture = wheelBody.createFixture(wheelFixtureDef);
    wheelBody.setLinearVelocity(new Vec2(50, 0));

線速度は、フレームごとに適用する場合、または重力を無効にする場合にのみ、大きな違いがあります。誰かが私が間違っていることを理解できますか?

4

2 に答える 2

1

Box2d は無重力シミュレーションをサポートしていません。重力を無効にしても違いが見られないのはそのためです。(0, 1)また、 の重力が非常に弱いため、ほとんど違いが見られません。試してみてください(0, 10)

またsetLinearVelocity、rayCast 関数です。あなたはおそらく を探していapplyForce()ます。

于 2012-05-26T18:22:15.403 に答える
0

物体に線速度を設定すると、ベクトルで設定された速度で物体が移動することを意味します。重力を無効にすると、この動きに影響を与えるものは何もありませんが、重力を有効にすると、その動きはフレームごとに重力の影響を受けます。宇宙空間にりんごを投げると、りんごは飛んだ方向に無限に動きますが、地球上では重力がりんごを引き下げ続けます。体を好きな方向にまっすぐ動かしたい場合は、フレームごとに線速度を設定する必要があります。このチュートリアル #2.35 と #2.36 を見てください。問題がうまく説明されています。

幸運を

于 2012-10-20T08:11:25.773 に答える