9

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

在以下答案中有一个 javascript 解决方案: 圆形/径向进度条

谢谢。

4

2 回答 2

15

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

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

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

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

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

于 2013-08-01T19:07:01.757 回答
0

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

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

于 2013-08-02T04:15:47.237 回答