有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java移动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.getBody().applyLinearImpulse(new Vector2(-0.12f, 0.0f), player.getBody().getWorldCenter(), true);
        }

然后物体继续朝那个方向运动,直到我施加一个不同的力。那么,有没有办法让它以恒定的速度移动,而不是永远以恒定的速度移动?我尝试过摩擦,但似乎很痛苦


共 (2) 个答案

  1. # 1 楼答案

    Body有一个setTransform(浮动x、浮动y、浮动角度)方法

    所以,玩家。getBody()。setTransform(-0.12f,0.0f,此处为角度)

  2. # 2 楼答案

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

    无论何时按下一个键,都会设置velXvelY,如果不按下任何键,则默认设置为0