当前位置: 首页 > 知识库问答 >
问题:

移动Box2D车身的简单方法

公羊新
2023-03-14

在纯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个答案

葛磊
2023-03-14

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。

上官扬
2023-03-14

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

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

 类似资料:
  • 当我触摸屏幕时,身体会逐渐移动,当触摸点靠近时,身体会变慢。我的问题是我想以恒定的速度移动身体,假设给定的速度是60 kpH,身体应该以60 kpH的速度开始移动,直到接触点。我在想解决方案是在屏幕上触摸,获得角度,然后使用该角度移动身体,然后增加速度以获得正确的速度?

  • 我制作了一个身体,我想在点击按钮时移动它,我已经能够使用但它不准确。假设我想以40的线速度移动我的身体7米,我该怎么做? 我可以用身体。setTransform()但我需要身体真正移动,而不是传送。提前谢谢

  • 我想再写一个像Flappy Bird这样的游戏。所以,我有一个身体,与鸟,并设置他的位置在开始在屏幕中部与精灵在上面。现在当用户点击屏幕时,我想把鸟向上移动。但我怎样才能做到呢?身体setTransform(向量、角度)不是我想要的。你能帮我解决这个问题吗?

  • 我是Box2d的新手,遇到了问题,无法解决。当用户触摸我的左右按钮时,我想左右移动我的播放器。我创建了一个固定装置,我可以移动身体和固定装置,但不能移动玩家精灵。如何将玩家精灵连接到我的身体上?我该如何控制身体,因为我无法阻止它。我想找到一种控制box2d播放器的正确方法。我不能使用setLinerVelocity等。 这是我的密码 播放屏幕 显示方法 渲染方法 相机更新方法 createPlay

  • 我需要根据收到的表单游戏中心服务器的位置移动box 2d主体。 收到体位后,我只需使用以下命令更新体位:- 但它以不受许可的方式移动身体(例如,身体在屏幕上显示出一些人)。同时我的精灵形象不动(附身)。

  • 这是一个使用box2d的非常简单的场景。我尝试了不同的视口和不同的屏幕尺寸。我不明白为什么尸体下落得很慢。实际上,我不太确定它是否慢,原因可能是视口设置等。这是主类: 和水平屏幕: