|
|
1
3
我假设你在做一个游戏,如果你不忽略速度和位置,其他一切都适用。 你得计算出在哪里画出所有的东西,其实没有捷径可走。 但是,就复制状态而言,您需要以稍微不同的方式处理问题。 每个可见的游戏对象(演员、doodad等)必须保持它自己的状态,即它在哪里、要去哪里、要显示的动画帧。我在这里向你展示的方式也会阻止 temporal aliasing 作为游戏循环的一部分,您应该首先通过循环更新每个对象,将上次更新后的增量时间传递给它们,然后每个对象应该保持以前和当前的状态。当要求用dt作图时,即在两个状态之间做线性插值,以创建一个可绘制状态。 在计算适当的时间时,应遵循指导原则。 here . 是的,这篇文章是关于一个集成引擎的,但是所使用的方法将适用于没有它们的游戏,并且将允许游戏在没有足够的电力来保持的环境中优雅地缩小规模,并且如果硬件在你脚下发生变化,也决不运行得太快。 伪代码:
那么你的游戏循环应该是:
每个状态都包含描述对象位置、速度和动画帧所需的所有信息。一个简单的状态类可能看起来像:
减去两个状态应该产生一个中间状态。在状态中添加时间应该根据速度计算下一个位置,并确定下一帧动画。 |
|
|
pats · 在Libgdx中定位和旋转动画 9 年前 |
|
|
harryisaac · SceneKit自定义几何体纹理错误 9 年前 |
|
|
user8581488 · OpenGL ES3阴影贴图问题 9 年前 |