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

标签 java android libgdx line curve

What i need

我最近一直在研究 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/

相关文章:

java - 您可以创建(Oracle JVM)java 堆的最小值是多少?

java - 读取 DOM 文档中的所有命名空间

Android - Extrac SameSite=来自 Webview 或 URL 的严格 cookie

android - 如何在android中读取xml sax解析器

java - libgdxcamera.position.set导致撕裂

android - Libgdx 中的 ListView

java - libgdx 如何在触摸时缩放和旋转 3d 模型

java - 将 Android 启动 Activity 更改为另一个 Activity = 应用程序无法加载

java - 从一个构造函数调用另一个构造函数有什么优点和缺点吗?

java - View 的 contentDescription 不能与 TextToSpeech 一起正常工作