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

8

我需要什么

我最近在研究LibGDX,并似乎遇到了问题,如图片所示,蓝点代表用户的手指,地图生成是我卡住的地方,LibGDX是否提供动态绘制曲线对象的方法?我可以简单地将它们生成为图像,但然后该图像会被拉伸到极致,以至于手指的间隙可以容纳3个!但还需要成千上万的PX高度来适应整个关卡设计。

是这样的吗,我应该绘制数百个紧密相邻的多边形来制作曲线?另一方面,我需要一种确定物体从底部到顶部的方式,以便我可以生成地图的另一个'块'。


1
你可以在运行时通过自己绘制来生成一个PixMap,例如基于CatmullRomSpline - noone
你是否曾经找到过适合你的解决方案? - Mike James Johnson
2个回答

1
你不需要数百个多边形来绘制你所画的曲线。左侧和右侧各40个四边形就足够了,看起来会很平滑。将其提高至每侧100个四边形,它看起来几乎完美平滑,现代设备也不会有任何问题以60fps运行。
你可以使用Mesh类为每个侧面生成一个程序化网格。你可以让网格停留在一个位置,锁定到相机,并修改它的顶点和UV来使其看起来像你正在沿着一个无限长的走廊向下移动。这将需要一定的数学知识,但一旦掌握了这些,就应该是轻松的。
基本上,你的关卡设计可以基于某种以Y偏移量为输入的方程。或者它可以是一长串的偏移量,并且你可以使用样条方程或线性方程来插值它们之间的差距。输出将是UV和X坐标,这些可以用来更新你的两个网格的每个顶点。
你可以使用顶点着色器来高效地更新UV坐标,使用一个常量偏移统一参数,在每帧更新它。这样你就不必每帧将UV数据移动到GPU上。
对于顶点位置,使用您的网格底层的float[],并在每帧调用setVertices()来更新它。信息在这里
实际上,如果你保持UV和X位置不变,只向上滚动Y位置的话,可能会看起来更好。在屏幕顶部和底部保留一些填充的四边形,并在其滚动到屏幕外后将顶部四边形移动到底部即可。

嗯,从高层次的角度来看,这对我来说确实很有道理,但在我开始实际编写代码之前,我认为我还有一些关于GDX的学习路程。非常感谢您的出色回答! - Broak

0
如何创建一组可变地组合的曲形图像?例如,中间的缺口将位于每个图像的顶部和底部的中间位置(端点和起始点具有相同的曲率)...... 在起始点和终点之间,您可以使用任意形状。
最后,您可以随机组合这些图像并获得一个无限的世界。
如果您不想每次都停在中间,您还可以像左、中、右这样设置三个入口和出口点。在以左侧结束的图像之后,您当然需要添加以左侧开始但可能在其他位置结束的图像...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接