什么是LIBGDX的Delta时间

Anu*_*sha 6 libgdx

LIBGDX的Delta时间是多少?我读了很多关于这个的帖子.据我所知,达美时间是,

  • 前一帧和当前帧之间的时间间隔
  • delta时间将加到1,因为它计算每秒x帧,即.(1/x的帧)
  • 为了使游戏的速度保持不变,我们使用dt

    如果我们说60*dt那么它将每秒移动60帧,无论移动速度如何(例如).

    所以,这就是我对delta时间的了解,但是我没有得到关于它的清晰视图,因为对于更新或渲染方法,我们传递的是delta时间但是在我们指定的代码中我们计算PER SECOND的位置?

例如,

    public void update(float dt)
     {
       float distance +=2*dt;
     }
Run Code Online (Sandbox Code Playgroud)

这段代码会每秒移动2帧吗?如果是,那么下面的代码会做什么?

    public void update(float dt)
    {
      ....
    }
    public void render(float delta)
    {
      update(delta);
    }
Run Code Online (Sandbox Code Playgroud)

所以,我需要答案,

  • 上面的代码暗示什么?
  • 代码背后究竟发生了什么?
  • 我们为什么这样做?
  • 我们在这个代码中指定它必须像上一个例子那样每秒移动x帧吗?

    我可以理解render方法是将delta时间传递给update方法,但我需要一些清晰的视图.很抱歉,如果这个问题看起来很愚蠢,但实际上很难在不知道发生了什么的情况下继续进行.任何帮助都会很棒!

Xop*_*ppa 21

Gdx.graphics.getDeltaTime()是从前一个开始到当前调用开始之间的时间render().它也是您在Screen#render()方法中获得的价值.而已.没有黑魔法或什么的.它只需要当前时间并从中减去前一次.该值的单位是秒.请注意,它不会加起来一个.

因此,如果前一次调用该方法的时间是,6:51:30.0159512 pm并且当前调用它的时间是,6:51:30.0324858 pm那么差异就是0.0165346 seconds.

速度(速度)以每秒"单位"为单位测量,例如meter per second或短:m/s.如果您的汽车行驶360 m/s时间过去了0.0165346 s,那么您在此时间行驶的距离是0.0165346*360 s*m/s=> 5.952456 m,因此差不多有6米.

请注意,这是基本物理,它不是特定于libGDX.如果您觉得很难理解,那么您可能想要了解速度.

回答你的底层问题,我想这是关于将你的渲染方法拆分成一个单独的更新方法.

  • 代码并不暗示任何事情
  • 代码背后没有任何内容
  • 使用定义明确的简短方法通常是一种很好的做法,请阅读:关注点分离
  • 不知道"帧"是什么意思,但速度乘以获得距离的时间