简单 java 数学函数不起作用
Simple java math function not working
这让我发疯,完全没有意义。
private double currentTime, oldTime;
float dt;
float xMove = .125f;
float yMove = .125f;
float cameraPosX = 1.0f;
float cameraPosY = 1.0f;
private void CameraMenuAnimation(){
cameraPosX += xMove * dt;
cameraPosY += yMove * dt;
GameCamera.setCameraPos(cameraPosX, cameraPosY);
System.out.println("xMove: " + xMove + " cameraDT: " + dt + " cameraPosX: "+ cameraPosX);
}
@Override
public void update() {
currentTime = System.currentTimeMillis();
dt = (float) (currentTime - oldTime);
oldTime = currentTime;
CameraMenuAnimation();
}
在上面的 println 语句中打印
System.out(21557): xMove: 0.125 cameraDT: 20.0 cameraPosX:
1.7832686E11
这会循环打印,并且 cameraDT: 会按应有的方式更改每个循环的值。 cameraPosX 永远不会改变价值,价值太高了。这怎么可能?它只是 CameraMenuAnimation() 中的一个简单的乘法和加法语句。
此外,如果我对 dt 的值进行硬编码,它就可以工作。
private void CameraMenuAnimation(){
cameraPosX += xMove * 20.0;
cameraPosY += yMove * 20.0;
.../
这怎么可能?
你可以查看这个的赋值
dt = (float) (currentTime - oldTime);
我认为这是导致问题的原因。
您似乎从未初始化 oldTime
。这可以解释您所看到的行为,即 cameraPosX
第一次获得非常大的价值,然后几乎没有变化。
这让我发疯,完全没有意义。
private double currentTime, oldTime;
float dt;
float xMove = .125f;
float yMove = .125f;
float cameraPosX = 1.0f;
float cameraPosY = 1.0f;
private void CameraMenuAnimation(){
cameraPosX += xMove * dt;
cameraPosY += yMove * dt;
GameCamera.setCameraPos(cameraPosX, cameraPosY);
System.out.println("xMove: " + xMove + " cameraDT: " + dt + " cameraPosX: "+ cameraPosX);
}
@Override
public void update() {
currentTime = System.currentTimeMillis();
dt = (float) (currentTime - oldTime);
oldTime = currentTime;
CameraMenuAnimation();
}
在上面的 println 语句中打印
System.out(21557): xMove: 0.125 cameraDT: 20.0 cameraPosX: 1.7832686E11
这会循环打印,并且 cameraDT: 会按应有的方式更改每个循环的值。 cameraPosX 永远不会改变价值,价值太高了。这怎么可能?它只是 CameraMenuAnimation() 中的一个简单的乘法和加法语句。
此外,如果我对 dt 的值进行硬编码,它就可以工作。
private void CameraMenuAnimation(){
cameraPosX += xMove * 20.0;
cameraPosY += yMove * 20.0;
.../
这怎么可能?
你可以查看这个的赋值
dt = (float) (currentTime - oldTime);
我认为这是导致问题的原因。
您似乎从未初始化 oldTime
。这可以解释您所看到的行为,即 cameraPosX
第一次获得非常大的价值,然后几乎没有变化。