Java 移动Box2D实体的简单方法

Java 移动Box2D实体的简单方法,java,libgdx,box2d,Java,Libgdx,Box2d,在纯java中,您只需向坐标添加值,如下所示: object.x += 5; object.y += 5; render(object, object.x, object.y); 有没有办法对Box2D车身执行此操作?因为如果我这样做: if(Gdx.input.isKeyPressed(Input.Keys.A) && player.getBody().getLinearVelocity().x >= -2.0f) { player.getBod

在纯java中,您只需向坐标添加值,如下所示:

object.x += 5;
object.y += 5;
render(object, object.x, object.y);
有没有办法对Box2D车身执行此操作?因为如果我这样做:

if(Gdx.input.isKeyPressed(Input.Keys.A) && player.getBody().getLinearVelocity().x >= -2.0f) {
            player.getBody().applyLinearImpulse(new Vector2(-0.12f, 0.0f), player.getBody().getWorldCenter(), true);
        }
然后物体继续朝那个方向运动,直到我施加一个不同的力。那么,有没有办法让它以恒定的速度移动,而不是永远以恒定的速度移动?我试过用摩擦来做实验,但似乎很痛苦。

身体有一个setTransform(浮动x,浮动y,浮动角度)方法


因此,player.getBody().setTransform(-0.12f,0.0f,这里的角度)

Peter的代码也可以工作,但我发现了另一种方法,因为setTransform可能会导致潜在的不必要的故障:

    float velX = 0, velY = 0;
    if(Gdx.input.isKeyPressed(Input.Keys.W)) {
        velY = 2.0f ;
    } else if(Gdx.input.isKeyPressed(Input.Keys.D)) {
        velX = 2.0f;
    } else if(Gdx.input.isKeyPressed(Input.Keys.S)) {
        velY = -2.0f;
    } else if(Gdx.input.isKeyPressed(Input.Keys.A)) {
         velX = -2.0f;
    }

    player.getBody().setLinearVelocity(velX, velY);
无论何时按下一个键,都会设置
velX
velY
,如果未按下任何键,则默认设置为0