【发布时间】:2015-04-05 12:09:18
【问题描述】:
我试图让身体随着速度的增加而移动。起初它开始加速,但不久后达到恒定速度。如何让它保持加速?
我的代码如下所示:
world = new World(new Vector2(0, 0), true);
if (Gdx.input.isKeyPressed(Input.Keys.D))
body.applyLinearImpulse(400f, 0, pos.x, pos.y, true);
if (Gdx.input.isKeyPressed(Input.Keys.A))
body.applyLinearImpulse(-400f, 0, pos.x, pos.y, true);
if (Gdx.input.isKeyPressed(Input.Keys.W))
body.applyLinearImpulse(0, 400f, pos.x, pos.y, true);
if (Gdx.input.isKeyPressed(Input.Keys.S))
body.applyLinearImpulse(0, -400f, pos.x, pos.y, true);
【问题讨论】:
-
你的世界有多大?默认 Box2D 设置为 1 px = 1 m。这意味着如果您想在 720 p 屏幕上运行您的游戏(例如),您的世界将是 1280 米 x 720 米,一个 100 像素 x 100 像素的小对象的大小将是 100 米 x 100 米,即巨大的。 Box2D 只擅长处理“现实”的尺寸和速度。这意味着使用巨大的尺寸和速度会导致糟糕的模拟和/或您可以观察到的限制。
-
解决方案很简单:创建一个小尺寸的视口,这样每个对象都会很小,box2d不会有问题。如果是您的问题,请查看my answer on this message
-
所以?关于这个问题的任何更新?您尝试了我的解决方案还是 Springbua 的解决方案?那行得通吗?如果没有,你观察到什么?
-
我通过将屏幕缩小到 100f 解决了这个问题,就像你说的 box2d 中的球很大。