使用ImmediateModeRenderer擦除libgdx中的部分行

您好我使用的ImmediateModeRenderer renderer = new ImmediateModeRenderer10(); 用下一个块来渲染一条线

 renderer.begin(matrix, GL10.GL_LINES); renderer.color(color.r, color.g, color.b, color.a); renderer.vertex(x0, y0, 0); renderer.color(color.r, color.g, color.b, color.a); renderer.vertex(x1, y1, 0); renderer.end(); 

但是我知道,当我把鼠标拖到它上面的时候,我想抹掉这一行的一部分,有什么想法吗?

如果要在将鼠标拖动到其上时删除部分行,有两种方法:

作弊的方式

有一个纯色的背景,并让鼠标在现有的线上创建线条/颜色的形状。 玩家将被赋予被擦除线条的错觉,尽管如果你想要做一些相当复杂的事情,这种方法可能会失败。

你也可以有一个纹理背景,并给它一个相同的前景(这是完全透明的,鼠标点击添加到其透明度蒙版)。

非作弊的方式

检测鼠标与线相交的位置,并将线分成两部分,让您在多次擦除(全部平行)之后绘制多条线。

为了检测这一点,你应该确定每一帧的鼠标当前位置和它在前一帧的位置之间的vector,并确定这个vector的线是否与你绘制的线相交。 如果是这样,将交叉点上的线分成两行,然后稍微缩短(否则,由于两行仍完美结合,因此您的删除将不会显示任何内容)。