【发布时间】:2013-07-31 22:10:47
【问题描述】:
对于我们使用 libgdx 开发的游戏,我们需要向用户显示移动的剩余时间。 我们如何渲染一个显示剩余秒数的圆形进度条?
在以下答案中有一个 javascript 解决方案: Circular / radial progress bar
谢谢。
【问题讨论】:
标签: libgdx
对于我们使用 libgdx 开发的游戏,我们需要向用户显示移动的剩余时间。 我们如何渲染一个显示剩余秒数的圆形进度条?
在以下答案中有一个 javascript 解决方案: Circular / radial progress bar
谢谢。
【问题讨论】:
标签: libgdx
首先创建一个带有完整圆形进度条的纹理(区域)。接下来对由一个或多个三角形组成的形状(网格)进行变形以适应应显示的实际区域。
为此,请考虑从图像中心到图像边界的一条线。计算给定角度的线的交点(和“墙”,即图像的左、右、顶部或底部)。这将为您提供需要绘制的纹理(区域)部分。
例如,如果静止的线(角度为零)在中间穿过图像的底墙,您的图像是方形的并且您想顺时针旋转,那么 45 到 135 度之间的所有东西都会撞到左墙, 135 到 225 度之间的角度撞击顶壁,依此类推。
现在你有了形状,你需要用三角形来表达它。或者为了保持与 libgdx 的 spritebatch 的兼容性,使用偶数个三角形。确保根据顶点的位置更新 U 和 V 值。
可以在这里找到一个简单的实现:https://github.com/xoppa/world/blob/master/src/com/xoppa/android/misc/RadialSprite.java
【讨论】:
您可以使用 OpenGL 着色器来生成圆形进度条。这是一个动画计时器,是个不错的起点:http://glsl.heroku.com/e#10201.0
但是,我不认为有任何好的 Libgdx 基础设施可以像这样插入着色器。您必须使用 OpenGL API(请参阅 https://code.google.com/p/libgdx/wiki/OpenGLShader)。
【讨论】: