我最近一直在研究 LibGDX,似乎碰壁了,在图片中看到,蓝点代表用户手指,它自己生成的 map 是我似乎卡住的地方,LibGDX 是否提供了一种方法动态绘制弯曲的对象?我可以简单地自己将它们生成为图像,但随后图像被极大地拉伸(stretch)到手指可以容纳 3 的间隙!但也需要 1000 的 PX 高度才能容纳整个关卡设计。
是不是我应该将数百个多边形靠在一起画成一条曲线? 另一方面,我需要一种方法来确定对象何时从底部到顶部,以便我可以生成另一个“ block ” map 。
最佳答案
您不需要成百上千个多边形来制作您所画的曲线。你可以在左边有 40 个四边形,在右边有 40 个四边形,看起来会很平滑。将每一侧的帧数提高到 100,它看起来几乎完美平滑,而且任何现代设备都不会在以 60fps 运行它时遇到任何问题。
您可以使用 Mesh 类为每一面生成程序网格。您可以使网格停留在一个位置,锁定到相机,并修改它的顶点和 UV,使它看起来就像您正在沿着无限长的走廊平移。这将需要大量的数学知识,但一旦你掌握了这些知识,应该会一帆风顺。
基本上,您的关卡设计可以基于某种将 Y 偏移量作为输入的方程式。或者它可以是一长串偏移量,您可以使用样条方程或线性方程在它们之间进行插值。输出将是 UV 和 X 坐标,可用于更新两个网格的每个顶点。
您可以使用顶点着色器有效地更新 UV 坐标,使用更新每一帧的恒定偏移统一参数。这样您就不必每帧都将 UV 数据移动到 GPU。
对于顶点位置,使用网格的底层 float[]
并在每一帧调用 setVertices()
来更新它。信息here .
实际上,如果您不理会 UV 和 X 位置,而只是向上滚动 Y 位置,它可能看起来会更好。在屏幕顶部和底部保留几个填充的四边形,并在它滚出屏幕后将顶部四边形移动到底部。
关于java - 在 LIBGDX 中绘制弯曲的自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037813/