【发布时间】:2017-02-23 20:31:07
【问题描述】:
我正试图让这个Vector3 在它向右时加速,在它不向右时减速。这是我的更新方法。为什么不加速?它具有恒定的速度。我知道您可以将 -5 添加到 vel.x 如果它在左侧,如果它在右侧添加 +5,然后在 vel.x 为 0 时停止它,但我正在努力完成这项工作。我真的不明白我做错了什么。
在课堂上我声明了两个Vector3s(用于update)
public void update(float delta) {
timePassed += Gdx.graphics.getDeltaTime(); //irrelevant
if (pos.x > Kiwi.WIDTH / 2)
vel.add(-5, 0, 0);
vel.x *= 0.8f;
vel.scl(delta);
pos.add(vel.x, 0, 0);
vel.scl(1 / delta);
}
【问题讨论】:
-
我只想要
vel.add(-5,0,0);中的if。没有其他的。当它向左时,我希望它再次减速。你还需要什么上下文?这是此屏幕自动取款机的完整更新方法。当vector在屏幕的右半边时,我希望它加速,否则减速。我说得有道理吗?如果我不知道,请告诉我。 -
如果我删除
velx*=0.8f;,它会按预期加速,但显然它在到达屏幕中间后并没有减速,它会以恒定速度继续。 -
抱歉拖了这么久。我非常感谢您的帮助。我更新了我的问题并包含了完整的更新方法。它目前的样子应该让它加速,对吧?请注意,
ACC等于 -3。 -
抱歉,不清楚。第一次编辑是我在阅读您的答案后将更新方法更改为。我现在包含了更新方法,就像它从一开始的样子。
-
在我的代码中,我使用的是 tutorialVel 和 tutorialPos,但为了更容易理解,我在这里分别将其更改为 vel 和 pos。在这里发布时,我忘记将单个 tutorialVel.x 错误地编辑为 vel.x。
标签: java libgdx logic game-physics