Почему тело не падает под действием силы тяжести?

Я новичок в среде разработки игр box2d и libgdx.

Я создал мир и форму круга.

У меня проблемы с гравитацией. Круг, который я создал в libgdx box2d, не падает под действием гравитации. Пожалуйста, помогите мне, я застрял в этой проблеме.

public void render(float delta) {
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    box2dDebugRenderer.render(world, orthographicCamera.projection);

    world.step(TIME_STEMP, VELOCITY_ITERAIONS, POSITION_ITERATION);
    System.out.println(b.getPosition().y);
}

@Override
public void resize(int width, int height) {
    orthographicCamera.setToOrtho(false, width/10, height/10);
    orthographicCamera.update();
}

@Override
public void show() {
    world = new World(new Vector2(0, -9.81f), true);
    box2dDebugRenderer = new Box2DDebugRenderer();
    orthographicCamera = new OrthographicCamera();


    BodyDef balldef = new BodyDef();
    balldef.type = BodyType.DynamicBody;
    balldef.position.set(0, 1);



    CircleShape ballshape = new CircleShape();
    ballshape.setRadius(1f);


    FixtureDef ballfixture = new FixtureDef();
    ballfixture.density = 1000f;
    ballfixture.friction = .3f;
    ballfixture.restitution = .7f;
    ballfixture.shape = ballshape;

    b = world.createBody(balldef);
    f = b.createFixture(ballfixture);


} 

person Ravi Kumar Mistry    schedule 14.10.2013    source источник
comment
Что происходит тогда? Тело просто молчит?   -  person ssantos    schedule 14.10.2013
comment
да, он не меняет свою позицию по оси Y вниз   -  person Ravi Kumar Mistry    schedule 14.10.2013
comment
Не могли бы вы опубликовать значения для ваших ступенчатых констант?   -  person ssantos    schedule 14.10.2013
comment
частный статический окончательный поплавок TIME_STEMP = 1/60; частный статический финал int VELOCITY_ITERAIONS = 8; частный статический финал int POSITION_ITERATION = 3;   -  person Ravi Kumar Mistry    schedule 14.10.2013


Ответы (1)


Это твоя проблема.

final float TIME_STEMP = 1/60;

Вы выполняете целочисленное деление, в результате чего получается 0. Другими словами, ваш мир застрял во времени. Попробуй это.-

final float TIME_STEMP = 1.0f / 60.0f;
person ssantos    schedule 14.10.2013
comment
Пожалуйста. Это случилось со мной когда-то :) - person ssantos; 14.10.2013