我得到一个非常奇怪的输出,应该是一个非常简单的计算。我正试图根据三角洲顺利移动相机。如果你看下面的CameraMenuAnimation(),xMove和cameraDT会相乘并添加到cameraPosX。 cameraPosX随后吐出1.7832639E11。这没有道理? CameraPosY做同样的事情。
private double currentCameraTime, oldCameraTime, cameraFrameTime, cameraDT;
float cameraPosX = 1.0f;
float cameraPosY = 1.0f;
xMove = .125f;
yMove = .125f;
private void CameraMenuAnimation(){
cameraPosX += (xMove * cameraDT);
cameraPosY += (yMove * cameraDT);
GameCamera.setCameraPos(cameraPosX, cameraPosY);
System.out.println("xMove: " + xMove + " cameraDT: " + cameraDT + " cameraPosX: "+ cameraPosX);
}
@Override
public void update() {
//some accumulator variables up here that I removed
while (accumulator >= step) {
currentCameraTime = System.currentTimeMillis();
cameraFrameTime = currentCameraTime - oldCameraTime;
cameraDT = cameraFrameTime;
CameraMenuAnimation();
oldCameraTime = currentCameraTime;
accumulator -= step;
}
它从上面的println语句打印出来。这完全没有意义。
System.out(8714):xMove:0.125 cameraDT:31.0 cameraPosX:1.7832639E11
答案 0 :(得分:0)
很难说因为你没有给出一个完整的例子,但看起来oldCameraTime没有被初始化,所以第一个cameraDT可能非常大。