据我所知,这应该会导致身体移动。我在类中有一个更新方法,但我不确定还要添加什么。我使用box2d作为libgdx的一部分。我看过的所有地方都只是说要设置线速度,但它不起作用。
BodyDef bodyDef = new BodyDef();
bodyDef.position.set(new Vector2(pos.x, pos.y));
bodyDef.type = BodyDef.BodyType.KinematicBody;
bodyDef.linearDamping = 0.0f;
bodyDef.angularDamping = 0.0f;
unitBoxBody = world.createBody(bodyDef);
PolygonShape player = new PolygonShape();
player.setAsBox(unit * xSize, unit * ySize);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = player;
fixtureDef.density = 0.0f;
fixtureDef.friction = 0.0f;
fixtureDef.restitution = 0.0f;
fixture = unitBoxBody.createFixture(fixtureDef);
player.dispose();
unitBoxBody.setLinearVelocity(10, 0);
我使用了许多大小值来表示没有变化的速度
你必须让你的世界一步:
把这个放到你的render()方法中:world.step(TIMESTEP, VELOCITY_ITERATIONS, POSITION_ITERATIONS);
和定义这些变量:
private static final float TIMESTEP = 1.0f / 60.0f;
private static final int VELOCITY_ITERATIONS = 8;
private static final int POSITION_ITERATIONS = 3;