2

速く動かしたい四角形がありますが、何らかの理由で私が使用するより速い速度はまだ遅いようです. 私は何を間違っていますか?また、円を上から表面に落としましたが、重力で遊んでも、風船のように落ちてきます...

いくつかの宣言

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);

これですべての動きをスピードアップするための提案はありますか?

私は 1280 x 720 の画面を使用してきましたが、他の情報源から小さい方が良いことがわかったので、640 x 260 に縮小しましたが、それでも必要なパフォーマンスではありませんでした。本当にどこまで小さくすればいいの?

4

1 に答える 1

6

Box2d マニュアル(セクション 2.2)から:

Box2D は、メートル、キログラム、および秒用に調整されています。したがって、範囲はメートル単位であると考えることができます。通常、Box2D は、オブジェクトが典型的な実世界のオブジェクトのサイズである場合に最適に機能します。たとえば、バレルの高さは約 1 メートルです。浮動小数点演算の制限により、Box2D を使用して氷河や塵の粒子の動きをモデル化することはお勧めできません。

https://stackoverflow.com/a/4556714/960524を参照してください

于 2013-07-17T16:27:56.483 に答える