Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
给出奇怪结果的Java双乘法_Java_Double_Game Engine - Fatal编程技术网

给出奇怪结果的Java双乘法

给出奇怪结果的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

目前正在编写一个小框架,我必须用于一个学校项目,更准确地说,一个乒乓球游戏。我正在使用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.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请创建一个小的运行示例来显示您的问题。现在,很难说为什么它不起作用。