我想了解我需要移動我的對象的力量。這是我的世界是怎樣的設置和物理一步完成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);
}
}
所以我有一個1x1的盒子具有密度1重力設定爲-9.8和我期待的是,當我申請量對我的箱子的力大於重力(在這個例子中我已經設置爲10),箱子應該開始向上移動。
但箱子不動。在開始移動盒子之前,我必須將力設定到大約80(即body.applyForceToCenter(new Vector2(0, 80f), true);
)。
我認爲這是由於我的時間步長(我目前設置爲1/60f),但如果考慮到這一點會減少我在每一步應用的力量。
有人可以解釋我在這裏失算嗎?
你確定它根本不動嗎?也許,它只是移動得很慢。 10的力量意味着加速度剩下0.2。這意味着速度每秒增加0.2個單位/秒。根據您的規模,這可能會非常緩慢。 –