我最近一直在研究LibGDX,似乎碰壁了,如图所示,蓝点代表用户的手指,它本身的地图生成是我似乎陷入困境的地方,LibGDX是否提供了动态绘制的方法弯曲的物体?我可以简单地自己将它们生成为图像,但是图像会被极大地拉伸到手指可以容纳 3 个手指的间隙!但还需要 1000 PX 高才能适应整个关卡设计。
我是否应该将数百个多边形靠在一起绘制一条曲线?
另一方面,我需要一种方法来确定对象何时从下到上,以便我可以生成另一个“块”地图。
您不需要数百个多边形来绘制您所绘制的曲线。你可以在左边使用 40 个四边形,在右边使用 40 个四边形,看起来会非常平滑。将每边的值提高到 100,它看起来几乎完全平滑,并且任何现代设备都不会在以 60 fps 运行时遇到任何问题。
您可以使用 Mesh 类为每一面生成程序网格。您可以使网格留在一个位置,锁定到相机,并修改它的顶点和 UV,使其看起来像是在沿着无限长的走廊平移。这需要预先进行大量的数学计算,但一旦掌握了这些,应该会很顺利。
基本上,您的关卡设计可以基于某种以 Y 偏移作为输入的方程。或者它可能是一长串偏移,您可以使用样条方程或线性方程在它们之间进行插值。输出将是 UV 和 X 坐标,可用于更新两个网格的每个顶点。
您可以使用顶点着色器来有效地更新 UV 坐标,使用更新每个帧的恒定偏移统一参数。这样您就不必每帧都将 UV 数据移动到 GPU。
对于顶点位置,请使用网格体的底层float[]
并打电话setVertices()
每帧更新它。信息here https://github.com/libgdx/libgdx/wiki/Meshes.
实际上,如果您保留 UV 和 X 位置,而只向上滚动 Y 位置,效果可能会更好。在屏幕顶部和底部保留几个四边形的填充,并在滚动离开屏幕后将顶部四边形移动到底部。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)