Я работаю над игрой про грузовики с libgdx и box2d. В моей игре 1 метр = 100 пикселей. Мой 2d ландшафт сгенерирован мной и сделан по точкам.
Что я сделал, так это создал полигональную область для всего полигона и использовал texturewrap.repeat. Проблема в том, что размер моей игры уменьшен в 100 раз, чтобы соответствовать единицам box2d.
Итак, ширина моей камеры 800/100, а высота 480/100. (8x4,8 пикселей)
Как я создал полигональную область
box = new Texture(Gdx.files.internal("box.png"));
box.setFilter(TextureFilter.Linear, TextureFilter.Linear);
box.setWrap(TextureWrap.Repeat, TextureWrap.Repeat);
TextureRegion region = new TextureRegion(box);
psb = new PolygonSpriteBatch();
float[] vertices = new float[paul.size];
for (int i = 0; i < paul.size; i++) {
vertices[i] = paul.get(i);
if (i % 2 == 1)
vertices[i] += 1f;
}
EarClippingTriangulator a = new EarClippingTriangulator();
ShortArray sar = a.computeTriangles(vertices);
short[] shortarray = new short[sar.size];
for (int i = 0; i < sar.size; i++)
shortarray[i] = sar.get(i);
PolygonRegion pr = new PolygonRegion(region, vertices, shortarray);
System.out.println(vertices.length + " " + shortarray.length);
ps = new PolygonSprite(pr);
Теперь я просто нарисую полигонспрайт в свою партию полигонспрайтов. Это приведет к многократному рендерингу текстуры на полигоне, но картинка будет в 100 раз больше и сильно растянута. Левый пример — это то, что я хочу сделать, а правый — это то, как выглядит моя игра.