给出奇怪结果的Java双乘法
目前正在编写一个小框架,我必须用于一个学校项目,更准确地说,一个乒乓球游戏。我正在使用NetBeans进行编码。我试图使球的运动速度框架独立,如果我没有错的话,可以通过公式给出 新位置=上一个位置+速度*自上一帧起的时间 我选择使用我编写的2D向量类来表示球的位置(它只有一个x和y属性以及它们各自的getter/setter),因此用于更新球位置的方法如下所示给出奇怪结果的Java双乘法,java,double,game-engine,Java,Double,Game Engine,目前正在编写一个小框架,我必须用于一个学校项目,更准确地说,一个乒乓球游戏。我正在使用NetBeans进行编码。我试图使球的运动速度框架独立,如果我没有错的话,可以通过公式给出 新位置=上一个位置+速度*自上一帧起的时间 我选择使用我编写的2D向量类来表示球的位置(它只有一个x和y属性以及它们各自的getter/setter),因此用于更新球位置的方法如下所示 public void update(double deltaTime) { this.position.setX(this.p
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.24444338235985E9
我不知道这是为什么,我完全迷路了。我尝试过使用BigDecimal类,但结果是一样的
编辑:
编辑2:
EDIT3:已解决,传递的deltaTime在
deltaTime=currentTime-lastFrameTime
中是错误的,因为第一次迭代时未初始化currentTime
。我想我们需要查看setX、setY、getX和getY,你确定没有设置或检索错误的字段吗?Imgur在学校被阻止,下面是一个,在哪里检查newX
?)的值非常简单??你能检查一下这个代码前后的this.texture.update(this.position)代码>以便我们知道这是否导致了一些问题。。我们是否需要知道texture.update()的实现代码>-似乎正在使用50的值,这仍然很奇怪。。。纹理更新函数调用Swing Methods请创建一个小的运行示例来显示您的问题。现在,无法解释它为什么不起作用。我想我们需要看看setX、setY、getX和getY,你确定你没有设置或检索错误的字段吗?Imgur在学校被阻止了,这里有一个,这很简单,尽管你在哪里检查newX
??你能检查一下这个代码前后的this.texture.update(this.position)代码>以便我们知道这是否导致了一些问题。。我们是否需要知道texture.update()的实现代码>-似乎正在使用50的值,这仍然很奇怪。。。纹理更新函数调用Swing Methods请创建一个小的运行示例来显示您的问题。现在,很难说为什么它不起作用。