Java双乘法给出了奇怪的结果

时间:2015-11-30 13:10:09

标签: java double game-engine

目前正在编写一个小框架,我必须将其用于学校项目,更确切地说,是一个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类但结果是一样的。

编辑:Vector class screenshot

EDIT2:Texture2D.update() and Test before and after setX()

EDIT3:已解决,deltaTime = currentTime - lastFrameTime中传递的deltaTime错误,因为currentTime未在第一次迭代时初始化。

0 个答案:

没有答案