gpt4 book ai didi

java - 需要有关 java 游戏循环的解释

转载 作者:行者123 更新时间:2023-12-01 22:37:16 27 4
gpt4 key购买 nike

我是java初学者。我正在努力学习游戏开发。我正在看this的教程youtube 上伟大的程序员!我完全跟着他,并达到了此播放列表的“#9 - 基本碰撞边界”。

他创建了以下游戏循环...

public void run(){
init();
long lastTime = System.nanoTime();
final double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
int updates = 0;
int frames = 0;
long timer = System.currentTimeMillis();

while(running){
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
if(delta >= 1){
tick();
updates++;
delta--;
}
render();
frames++;

if(System.currentTimeMillis() - timer > 1000){
timer += 1000;
System.out.println(updates + " Ticks, Fps " + frames);
updates = 0;
frames = 0;
}

}
stop();
}

我对这个方法很困惑。这个方法是如何运作的?以下变量如何工作?

刻度数

增量

更新

框架

我知道在这里解释这一点不太可行,但请帮助我。大家也可以给我一些学习和理解的引用。如果您需要任何进一步的信息,我会立即提供!

最佳答案

变量已被解释,但如果您仍然无法理解游戏循环在一般意义上的作用(我不知道他在教程中解释了多少),希望我能从我的内容中阐明一些内容学到了:

基本上,游戏循环当然会运行(渲染、更新等)游戏,但它也设置了游戏运行的恒定、受控速度。

例如,假设您想要制作一款 2D RPG 游戏,并且您希望生物(角色)以每秒 200 像素的速度在屏幕上移动。您可以通过循环来做到这一点,但问题是,不同的计算机会导致角色在不同的时间移动得更快或更慢,因为计算机只会尽可能快地一遍又一遍地执行循环中的代码。

这就是为什么您要实现代码来控制代码执行的速度,从而控制游戏更新的速度。您可以使用现实世界时间(使用以纳秒为单位获取时间的方法)来完成此操作。您将游戏限制为每秒仅更新帧 60 次。

在 while(运行)循环中使用 if 语句,仅当程序执行循环且距离上次执行 if 语句的时间至少为 1/60 秒时才使游戏更新。

希望这是有道理的。抱歉回复太长。如果您有更多问题,请随时提问!

关于java - 需要有关 java 游戏循环的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706134/

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