Это код моей игровой петли:
public void run() {
running = true;
boolean renderCheck = false;
double firstTime = 0;
double lastTime = System.nanoTime() / 1000000000.0;
double passedTime = 0;
double unprocessedTime = 0;
double frameTime = 0;
int frames = 0;
int fps = 0;
while (running) {
firstTime = System.nanoTime() / 1000000000.0;
passedTime = firstTime - lastTime;
lastTime = firstTime;
unprocessedTime += passedTime;
frameTime += passedTime;
while (unprocessedTime >= UPDATE_CAP) {
tick();
unprocessedTime -= UPDATE_CAP;
renderCheck = true;
}
if (frameTime >= 1.0) {
frameTime = 0;
fps = frames;
frames = 0;
System.out.println(fps);
}
if (renderCheck) {
render();
frames++;
renderCheck = false;
} else {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Это зона рендеринга:
private void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
this.createBufferStrategy(3);
return;
}
Graphics graphics = bs.getDrawGraphics();
graphics.setColor(Color.black);
graphics.fillRect(0, 0, WIDTH, HEIGHT);
handler.render(graphics);
graphics.dispose();
bs.show();
}
А вот и часть галочки (нет необходимости показывать другой код для обработчика, потому что онБуду так много читать):
private void tick() {
handler.tick();
}
Так что главная проблема в следующем.Когда я нажимаю кнопку, мой персонаж начинает двигаться.И, на самом деле, это так, но с некоторыми задержками, которые делают этот процесс ужасным.Через секунду все идет отлично.(Я уже проверил загрузку процессора - все идет нормально)
Эта проблема возникает только на Linux-ПК.Я проверил это на Windows 10 в формате exe, и все работало нормально!Это немного странно.