gpt4 book ai didi

java - 游戏循环 - 时间计算

转载 作者:行者123 更新时间:2023-12-01 12:07:24 25 4
gpt4 key购买 nike

在我的 Opengl“引擎”中,我有以下方法来计算帧中可能需要的所有时间值:

public static void computeTime(){
thisFrame = System.nanoTime();
delta = thisFrame - lastFrame;
lastFrame = thisFrame;
deltams = (float) (delta / 1e6);
deltas = (float) (delta / 1e9);
fps = (float) 1e9 / delta;
ticksInSeconds += deltas;
}

我在每一帧的开头调用这个方法。然后我使用增量值来计算运动和物体的运动。

这是执行此操作的正确方法吗?或者我在计算顺序中遗漏了一些东西?因为我感觉运行应用程序有点滞后......所以它不可能完全正确,不是吗?

最佳答案

编辑

显然计时器并不总是按照您的预期工作。请查看此线程中提供的其他答案。

原始答案

就我个人而言,我会使用逐帧固定移动,而不是根据自上一帧以来耗时进行可变移动。

要实现此目的,您需要一个像 update() 这样的方法来更新所有位置并绘制更新的 View ,然后使用计时器定期调用此方法:

Timer timer;
final int FPS = ... //Number of frames per second
final int MS_BETWEEN_UPDATES = 1000/FPS;

ActionListener updater = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
update();
}
};

void update() {
//Update your game here
}

void startGame() {
timer = new Timer(MS_BETWEEN_UPDATES, updater);
timer.start();
}

关于java - 游戏循环 - 时间计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com