在纯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);
}
然后物体继续朝那个方向运动,直到我施加一个不同的力。那么,有没有办法让它以恒定的速度移动,而不是永远以恒定的速度移动?我尝试过摩擦,但似乎很痛苦。
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。
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的非常简单的场景。我尝试了不同的视口和不同的屏幕尺寸。我不明白为什么尸体下落得很慢。实际上,我不太确定它是否慢,原因可能是视口设置等。这是主类: 和水平屏幕: