2013-07-17 61 views
2

我有一個矩形,我想快速移動,但由於某種原因,我使用的速度更快,似乎仍然很慢。我究竟做錯了什麼?我也下降從上面的圓圈到表面,甚至強硬我玩重力可以歸結像一個氣球......Libgdx Box2D速度不夠快

一些宣言

float velocity = 10000000f; 
static final float BOX_STEP=1/60f; 
static final int BOX_VELOCITY_ITERATIONS=6; 
static final int BOX_POSITION_ITERATIONS=2; 

重力,都試過了,他們似乎都吸

world = new World(new Vector2(0,-50),true);

地面我物體移動到

//ground 
    BodyDef groundBodyDef =new BodyDef(); 
    groundBodyDef.position.set(new Vector2(0, camera.viewportHeight * .08f)); 
    Body groundBody = world.createBody(groundBodyDef); 
    PolygonShape groundBox = new PolygonShape(); 
    groundBox.setAsBox((camera.viewportWidth) * 2, camera.viewportHeight * .08f); 
    groundBody.createFixture(groundBox, 0.0f); 

然後這裏是我的對象:

//ball 
    bodyDef = new BodyDef(); 
    bodyDef.type = BodyType.DynamicBody; 
    bodyDef.position.set(new Vector2(camera.viewportWidth * .2f, camera.viewportHeight * .75f)); 
    body = world.createBody(bodyDef); 
    CircleShape dynamicCircle = new CircleShape(); 
    dynamicCircle.setRadius(camera.viewportWidth * .035f); 
    FixtureDef fixtureDef = new FixtureDef(); 
    fixtureDef.shape = dynamicCircle; 
    fixtureDef.density = 0.5f; 
    fixtureDef.friction = 0.5f; 
    fixtureDef.restitution = 0.8f; 
    body.createFixture(fixtureDef); 
    body.setLinearVelocity(0,-100); 

    //slime boy 
    BodyDef bodyBoxDef = new BodyDef(); 
    bodyBoxDef.type = BodyType.DynamicBody; 
    bodyBoxDef.position.set(new Vector2(camera.viewportWidth * .08f,camera.viewportHeight * .191f)); 
    bodyBox = world.createBody(bodyBoxDef); 
    PolygonShape slimeBox = new PolygonShape(); 
    slimeBox.setAsBox(camera.viewportWidth * .04f, camera.viewportHeight * .03f); 
    FixtureDef fixtureSlimeDef = new FixtureDef(); 
    fixtureSlimeDef.shape = slimeBox; 
    fixtureSlimeDef.density = 1.0f; 
    fixtureSlimeDef.friction = 0.0f; 
    fixtureSlimeDef.restitution = 0.0f; 
    bodyBox.createFixture(fixtureSlimeDef); 

    debugRenderer = new Box2DDebugRenderer(); 

    body.applyTorque(1000000000); 
    bodyBox.setFixedRotation(true); 
    bodyBox.setBullet(true); 

任何一個有建議,以加快這一切動靜?

我一直使用720的屏幕1280,但我從其他來源看到越小越好,所以我縮小到640的260,但仍然不是我想要的性能。我真的應該走多小?

回答

6

Box2d Manual(第2.2節):

Box2D中被調諧爲米,千克和秒。所以你可以考慮 範圍在米。當對象 是典型真實世界對象的大小時,Box2D通常效果最好。例如,一個高約1米的桶是 。由於浮點運算的侷限性,使用Box2D來模擬冰川或塵埃的運動 粒子並不是一個好主意。

https://stackoverflow.com/a/4556714/960524

+0

是的,我才意識到這一點,我已經向世界電錶轉換。現在唯一的事情是,我的速度快速移動,但速度如此之快以至於跳過了一堆值,但我會學會解決這個問題。謝謝! – BalintD

+1

你應該接受P.T.回答爲你的答案。 ;) – Lestat