Текстура libGDX для 2D ландшафта

Я работаю в игре про грузовики с libgdx и box2d. В моей игре 1 метр = 100 пикселей. Мой 2-й рельеф создан мной и состоит из точек.

введите описание изображения здесь

То, что я сделал, сделал многоугольник для всего многоугольника и использовал 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 раз больше и будет очень растянутым. Левый пример - это тот, который я хочу сделать, а правый - то, как выглядит моя игра.

введите описание изображения здесь

4 голоса | спросил Boldijar Paul 3 Maypm14 2014, 18:03:43

3 ответа


0

Этот PR был объединен, и похоже, что он делает то, что вы хотите: https://github.com/libgdx/libgdx/pull/3799

См. RepeatablePolygonSprite.

ответил NateS 19 MonEurope/Moscow2016-12-19T21:29:37+03:00Europe/Moscow12bEurope/MoscowMon, 19 Dec 2016 21:29:37 +0300 2016, 21:29:37
0

Я не совсем уверен, решит ли это вашу проблему (не могу проверить это сейчас), но вам нужно установить координаты текстуры вашего TextureRegion к более высокому значению, вероятно, ваш коэффициент равен 100.

Таким образом, вы можете попробовать использовать region.setU2(100) и region.setV2(100). Так как координаты текстуры обычно идут из [0,1], значения выше этого значения будут снаружи. И поскольку вы устанавливаете TextureWrap для повторения, это будет повторять вашу текстуру снова и снова.

Таким образом, TextureRegion уже покажет вашу одну текстуру, повторенную 100 раз в направлении x и y. Если вы затем скажете PolygonSprite использовать этот регион, он должен отображаться как на изображении, которое вы опубликовали.

Надеюсь, это поможет ... :)

ответил evident 3 Maypm14 2014, 20:47:10
0

Вы можете создать новую текстуру по коду. Возьмите размер вашего уровня и заполните его текстурой, а затем удалите фон с верхней стороны. Посмотрите на карту пикселей. Может быть, это поможет вам.

Edit:

TextureRegion не повторяется, чтобы соответствовать размеру, который вы даже используете текстуру, или вы используете TiledDrawable.

ответил Rareș Smeu 7 Maypm14 2014, 21:31:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132