Это сводит меня с ума и не имеет абсолютно никакого смысла.Простая математическая функция Java не работает
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/1000', чтобы узнать, поможет ли вам поймать движение. –
Нет, потому что он обращается вспять, когда он достигает определенного значения. Я не показывал этот код. И, как я сказал выше, если я жестко кодирую значение в нем работает. – NJGUY
Знаете ли вы, что означает 1.78E11? Это приемлемая камера POSX для вас? Как это получилось так высоко? –