我正在做一个测试项目来学习box2d,我遇到了一个问题。我的模拟中的圆体慢慢地落在了veerrry上。我完成了所有像素/米转换,如此视频所示:https://youtu.be/IDZMRDb1A_M?t=13m35s(设置为涵盖此主题的教程的一部分)。这是我的代码:
public static final float PPM = 32;//Pixels per meter
private World world;
private Box2DDebugRenderer debugRenderer;
private OrthographicCamera box2DCamera;
@Override
public void create() {
world = new World(new Vector2(0, -9.81f), true);
debugRenderer = new Box2DDebugRenderer();
//Create test platform
BodyDef bodyDef = new BodyDef();
bodyDef.position.set(100 / PPM, 200 / PPM);
bodyDef.type = BodyType.DynamicBody;
Body body = world.createBody(bodyDef);
CircleShape shape = new CircleShape();
shape.setRadius(32 / PPM);
FixtureDef fdef = new FixtureDef();
fdef.shape = shape;
body.createFixture(fdef);
box2DCamera = new OrthographicCamera();
box2DCamera.setToOrtho(false, Metroid.WIDTH / PPM, Metroid.HEIGHT / PPM);
box2DCamera.translate(Metroid.WIDTH / 2 / PPM, Metroid.HEIGHT / 2 / PPM);
}
@Override
public void update(float deltaTime) {
world.step(deltaTime, 6, 2);
}
@Override
public void render(SpriteBatch batch) {
debugRenderer.render(world, box2DCamera.combined);
}
这是非常基本的,我完全不知道出了什么问题。在此先感谢:)
编辑(测试的额外细节):经过一些测试,我发现即使将world.step调用的步骤时间更改为2000,它仍然非常慢,速度更快,但仍然非常慢。相信我,它被称为,我测试了它。