在libgdx中绘制直线虚线的简便方法?

don*_*uxx 5 java android drawing draw libgdx

我想在libgdx中绘制一条直线虚线,用于Android游戏之间的屏幕点.

目前我有以下代码来绘制非虚线,使用ShapeRenderer:

shapeRenderer.begin(ShapeType.Line);
//draws normal line, would prefer it dotted...............
shapeRenderer.line(touchPos.x, touchPos.y, someSprite.getX(), someSprite().getY());
shapeRenderer.end();
Run Code Online (Sandbox Code Playgroud)

我已经看到了关于虚线的另一个问题,但是对我来说这有点过分,因为我不需要弯曲等等.我只需要一条直线虚线,就像

.................................................. .............................................

正在考虑有一个循环,只计算线上点的位置,只是在那里画点?但是真的有必要,有人知道更简单的方法吗?

don*_*uxx 9

目前我正在使用此方法绘制虚线:

/**
 * Draws a dotted line between to points (x1,y1) and (x2,y2).
 * @param shapeRenderer
 * @param dotDist (distance between dots)
 * @param x1
 * @param y1
 * @param x2
 * @param y2
 */
private void drawDottedLine(ShapeRenderer shapeRenderer, int dotDist, float x1, float y1, float x2, float y2) {
    shapeRenderer.begin(ShapeType.Point);

    Vector2 vec2 = new Vector2(x2, y2).sub(new Vector2(x1, y1));
    float length = vec2.len();
    for(int i = 0; i < length; i += dotDist) {
        vec2.clamp(length - i, length - i);
        shapeRenderer.point(x1 + vec2.x, y1 + vec2.y, 0);
    }

    shapeRenderer.end();
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我计算了绘制线的矢量并通过它循环以根据所需的点距离绘制点.在我的测试中,10的距离看起来相当不错:

 drawDottedLine(shapeRenderer, 10, x1, y1, x2, y2);
Run Code Online (Sandbox Code Playgroud)

这对我来说非常顺利.如果您有更好的绘制虚线的方法,请告诉我.