私は私のオブジェクトを移動するために必要な力の量を理解しようとしています。これは私の世界は、セットアップで、物理学のステップは、だから私は1重力が-9.8に設定されている密度の1x1のボックスを持っていると私は、私は量を適用するときにすることを期待していBox2D。どのくらいの力が必要であるかを理解しようとしています
private void setupWorld() {
mWorld = new World(new Vector2(0f, -9.8f), true);
BodyDef bodyDef = new BodyDef();
bodyDef.type = BodyDef.BodyType.DynamicBody;
bodyDef.position.set(x, y);
body = world.createBody(bodyDef);
PolygonShape box=new PolygonShape();
box.setAsBox(1,1);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = box;
fixtureDef.density = 1f;
fixtureDef.friction = 0.0f;
fixtureDef.restitution = 0.0f;
Fixture fixture = body.createFixture(fixtureDef);
box.dispose();
}
private void doPhysicsStep(float deltaTime) {
float frameTime = Math.min(deltaTime, 0.25f);
accumulator += frameTime;
while (accumulator >= TIME_STEP) {
body.applyForceToCenter(new Vector2(0, 10f), true);
world.step(TIME_STEP, VELOCITY_ITERATIONS, POSITION_ITERATIONS);
accumulator -= (TIME_STEP);
}
}
を行う方法であります(この例では10に設定しました)ボックスが重力よりも大きくなるようにしてください。
しかし、ボックスは移動しません。ボックスを移動する前に力を約80(つまり、body.applyForceToCenter(new Vector2(0, 80f), true);
)に設定する必要があります。
私はこれが私のタイムステップ(私は現在1/60fに設定されている)に起因すると考えましたが、それを考慮に入れて何かが私が各ステップで適用している力を減らすならば。
ここで誤算していることを誰かが説明できますか?
あなたはまったく動かないのですか?たぶん、それはちょうど非常にゆっくりと動いています。 10の力は、加速のために0.2が残されていることを意味する。これは、毎秒0.2単位で速度が増加することを意味します。スケールに応じて、これは非常に遅いかもしれません。 –