首页 文章

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

提问于
浏览
8

What i need

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

难道我应该将数百个多边形靠近在一起形成一条曲线?在一方面,我不需要一种方法来确定对象何时从下到上,所以我可以生成另一个“块”的 Map .

2 回答

  • 0

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

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

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

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

    对于顶点位置,使用Mesh的底层 float[] 并调用 setVertices() 每帧来更新它 . 信息here .


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

  • 1

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

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

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

相关问题