当前位置: 首页 > 知识库问答 >
问题:

在libgdx中实现不同render方法的质疑

薛钧
2023-03-14

最近,我决定制作一个新的游戏,并把那个机会给libgdx框架。很久以前,我曾经在Slick2D中制作一些游戏,我记得他们在更新(delta)和draw()对象时的方法是不同的,现在在只有render(delta)的libgdx中。所以我有了想法,抽象了游戏,并用更新和绘制制作了自己的类游戏和屏幕。然而,现在我对render方法中的参数delta表示怀疑。在互联网上看到一些关于libgdx的实现概念更新和绘制的例子,人们把delta参数从render方法传递到update和draw方法。从这段描述来看,我的问题是:

  1. 是否可以实现更新和绘制方法的概念?
  2. 是否应该将delta parametar传递给draw方法?
  3. 如果我在更新(delta)中进行计算,那么delta parametar在draw方法中的用途或用例是什么?

共有1个答案

夏理
2023-03-14
  1. 是的,分离关注点通常是个好主意。如果你的游戏循环只存在更新游戏逻辑和绘制游戏状态,那么这些方法会很好。当游戏发展时,可能需要添加其他步骤(如多次渲染传递、多人同步等)。
  2. 通常只在更新游戏逻辑时需要增量时间,而不是在渲染时。但是如果您确实需要它,那么可以将其作为参数传递。
  3. 从上一次调用render方法开始,现在是de time(以秒为单位)。你用它来更新你的游戏逻辑在帧率独立的事情。例如。计算角色的正确位置、动画的正确帧等。

请注意,仅仅按原样取delta时间可以导致例如在hick-ups上传送,并且不是离散的。因此,限制值通常是个好主意(例如delta=Math.min(delta,1/30F);)。当你需要你的游戏逻辑是离散的时候,使用固定的时间步长是经常使用的。

 类似资料:
  • 为什么会这样,何时必须实现render方法?

  • 我想我不明白render方法是如何工作的。 从我在网上读到的/在youtube教程上看到的,我发现render方法是一个循环函数,您可以使用它来保持游戏的更新和读取用户的输入。当您想要在屏幕中绘制一些东西时,您可以使用此方法,并且在绘制任何东西之前清除屏幕。 但是如果我想要静止地绘制一些东西,那么在render方法之外绘制它不是更好吗(这样计算机就不必多次清除屏幕并重新绘制所有东西)?我错过了什么

  • 1、render(String view) render(String view) 方法将对 view 所指向的模板进行渲染,view 参数最终指向的模板文件规则如下: String template = baseViewPath + viewPath + view 其中 view 即为 render(String view) 方法所携带的参数值,而 baseViewPath、viewPath 则

  • 本文向大家介绍不同js异步函数同步的实现方法,包括了不同js异步函数同步的实现方法的使用技巧和注意事项,需要的朋友参考一下 不同函数达到同步的函数模拟 funcList是函数执行函数的队列,其中回调函数中flag=true是同步标记量 以上这篇不同js异步函数同步的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍node.js中实现同步操作的3种实现方法,包括了node.js中实现同步操作的3种实现方法的使用技巧和注意事项,需要的朋友参考一下 众所周知,异步是得天独厚的特点和优势,但同时在程序中同步的需求(比如控制程序的执行顺序为:func1 -> func2 ->func3 )也是很常见的。本文就是对这个问题记录自己的一些想法。 需要执行的函数: 可以看出在func1,func2和func

  • 因此,如果我有一个方法,其中一个变量可以是一组不同类的实例,其中只有一些类有一个特定的实例变量,那么我如何在方法中使用这个实例变量,而不会得到