在LIBGDX中绘制弯曲的自定义对象?

时间:2014-02-26 09:59:03

标签: java android libgdx line curve

What i need

我最近一直在研究LibGDX并且似乎已经碰到了一堵墙,在图片中看到,蓝点代表用户手指,地图生成它本身就是我似乎卡住的地方,LibGDX是否提供了一种方法动态绘制弯曲物体?我可以简单地将它们自己生成为图像,但随后图像被拉伸到手指可以适合3的间隙点!但也需要1000英尺的PX高,以适应整个水平的设计。

难道我应该将数百个多边形靠近在一起形成一条曲线? 在一方面,我不需要一种方法来确定对象从底部到顶部的时间,这样我就可以生成另一个“地块”。

2 个答案:

答案 0 :(得分:1)

你不需要数百个多边形来制作像你画的曲线。您可以在左侧使用40个四边形,在右侧使用40个四边形,它看起来非常流畅。每侧增加到100,它看起来几乎非常光滑,没有现代设备在60fps下运行时会遇到任何麻烦。

您可以使用Mesh类为每一侧生成一个过程网格。您可以使网格保持在一个位置,锁定到相机,并修改它的顶点和UV,使其看起来像是在无限长的走廊上平移。这将需要预先进行相当数量的数学运算,但是一旦你有了这个数字就应该顺利进行。

基本上,您的关卡设计可能基于某种将Y偏移量作为输入的等式。或者它可能是一长串偏移,您可以使用样条方程或线性方程在它们之间进行插值。输出将是UV和X坐标,可用于更新两个网格的每个顶点。

您可以使用顶点着色器有效地更新UV坐标,使用更新每个帧的常量偏移均匀参数。这样您就不必每帧都将UV数据移动到GPU。

对于顶点位置,使用Mesh的基础float[]并在每帧中调用setVertices()来更新它。信息here


实际上,如果单独留下UV和X位置,它可能看起来更好,只需向上滚动Y位置。在屏幕的顶部和底部保留几个四边形填充,并在滚动屏幕后将顶部四边形移动到底部。

答案 1 :(得分:0)

如何创建一组可以变化的曲面形状。就像每个图像的顶部和底部中间的间隙将在中间(在结束点和起始点具有相同的曲率)... 在起点和终点之间你可以对形状发疯。

最后,你可以将这些图像随机地放在一起,获得无尽的世界。

如果你不想每次都停在中间,你也可以有三个入口和出口点(左,中,右)......并且在一个左边的图像之后,你当然需要添加一个从左侧开始的图像,但可能会在其他地方结束...