、私はthisこれを行うための最善の方法かもしれないと思うが、ステージでOpenGLを使用すると、それを解決する最も簡単な方法ではないことに注意して取る...
一方TextureRegionDrawableを使用し、ラインパス内の各点に対してスケール、回転、移動を行うことは、より簡単ではありますが、それを解決するための「美しい」方法でも高速な方法でもありません。
私はちょっとしたクラスを書いていますが、少なくとも参照のためには、特に角を使っていくらかの研磨が必要です。
public class LineDrawer extends Actor {
private Array<Vector2> path;
private float thickness;
private Image image;
public LineDrawer(Array<Vector2> path, float thickness, TextureRegionDrawable drawable) {
this.path = path;
this.thickness = thickness;
this.image = new Image(drawable);
this.image.setOrigin(Align.left);
}
@Override
public void draw(Batch batch, float parentAlpha) {
float dst, angle;
Vector2 pointA, pointB;
for (int i = 0; i < path.size - 1; i++) {
pointA = path.get(i);
pointB = path.get(i + 1);
dst = pointA.dst(pointB);
angle = MathUtils.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180f/MathUtils.PI;
image.setSize(dst, thickness);
image.setPosition(pointA.x, pointA.y, Align.left);
image.setRotation(angle);
image.draw(batch, parentAlpha);
}
}
}
OpenGLでは、テクスチャ座標を0-1の範囲を超えて指定できます。何が起こるかは、テクスチャパラメータラッピングモード(リピートやミラーなど)によって制御されます。私は、質問2に答えていると思う。丸め終わりは、rectLineをレンダリングした後に小さな円を追加することによって達成することができる。 「グロー」、「シェード」、「グラデーション」をどのように使いたいかのイメージを追加できれば、それらのソリューションも提案してみてください。 – Andreas