【问题标题】:How to render a circular/radial progress bar in Libgdx?如何在 Libgdx 中渲染圆形/径向进度条?
【发布时间】:2013-07-31 22:10:47
【问题描述】:

对于我们使用 libgdx 开发的游戏,我们需要向用户显示移动的剩余时间。 我们如何渲染一个显示剩余秒数的圆形进度条?

在以下答案中有一个 javascript 解决方案: Circular / radial progress bar

谢谢。

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    首先创建一个带有完整圆形进度条的纹理(区域)。接下来对由一个或多个三角形组成的形状(网格)进行变形以适应应显示的实际区域。

    为此,请考虑从图像中心到图像边界的一条线。计算给定角度的线的交点(和“墙”,即图像的左、右、顶部或底部)。这将为您提供需要绘制的纹理(区域)部分。

    例如,如果静止的线(角度为零)在中间穿过图像的底墙,您的图像是方形的并且您想顺时针旋转,那么 45 到 135 度之间的所有东西都会撞到左墙, 135 到 225 度之间的角度撞击顶壁,依此类推。

    现在你有了形状,你需要用三角形来表达它。或者为了保持与 libgdx 的 spritebatch 的兼容性,使用偶数个三角形。确保根据顶点的位置更新 U 和 V 值。

    可以在这里找到一个简单的实现:https://github.com/xoppa/world/blob/master/src/com/xoppa/android/misc/RadialSprite.java

    【讨论】:

    【解决方案2】:

    您可以使用 OpenGL 着色器来生成圆形进度条。这是一个动画计时器,是个不错的起点:http://glsl.heroku.com/e#10201.0

    但是,我不认为有任何好的 Libgdx 基础设施可以像这样插入着色器。您必须使用 OpenGL API(请参阅 https://code.google.com/p/libgdx/wiki/OpenGLShader)。

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多