目前正在编写一个小框架,我必须将其用于学校项目,更确切地说,是一个Pong游戏。我正在使用NetBeans进行编码。我试图让球运动速度与帧无关,如果我没有错,则由公式给出
新位置=最后位置+速度*自上一帧起的时间
我选择使用我写的2D矢量类来表示球的位置(所有它都是x和y属性以及它们各自的getter / setter)所以用于更新球位置的方法看起来像这样
public void update(double deltaTime) {
this.position.setX(this.position.getX() + (this.speed.getX() * deltaTime));
this.position.setY(this.position.getY() + (this.speed.getY() * deltaTime));
this.texture.update(this.position);
}
当我跑步时,球从屏幕上消失。我只检查了X坐标,但这就是我得到的。
newX = 300 + 5 * 0.025
newX = -7.2444433823598585E9
我不知道为什么会这样,我完全迷失了。我尝试过使用BigDecimal类但结果是一样的。
EDIT2:Texture2D.update() and Test before and after setX()
EDIT3:已解决,deltaTime = currentTime - lastFrameTime
中传递的deltaTime错误,因为currentTime
未在第一次迭代时初始化。