【问题标题】:libGDX texture a 2d terrainlibGDX 纹理 2d 地形
【发布时间】:2014-06-20 03:49:32
【问题描述】:

我在一个使用 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 倍并且非常拉伸。 左边的例子是我想做的,右边的例子是我的游戏的样子..

【问题讨论】:

  • 我也一直在为这类问题苦苦挣扎,一直无法找到不拉伸纹理的解决方案。如果我没有在 polygonBatch 上设置投影矩阵,那么它会渲染得很好,但是纹理不会随着相机“移动”。当我平移相机时,纹理处于静止状态。

标签: libgdx textures box2d terrain


【解决方案1】:

此 PR 已合并,看起来就像您想要的那样: https://github.com/libgdx/libgdx/pull/3799

参见RepeatablePolygonSprite。

【讨论】:

  • 很高兴看到这么久!自从我问了这个问题后,情况发生了很大变化,我希望我能再次有空闲时间,开始从事这种游戏:)
【解决方案2】:

我不完全确定这是否能解决您的问题(现在无法测试),但您需要将TextureRegion 的纹理坐标设置为更高的值,可能是您的 100 倍。

所以你可以尝试使用region.setU2(100)region.setV2(100)。由于纹理坐标通常从 [0,1] 开始,因此高于该值的值将在外部。而且因为您将 TextureWrap 设置为重复,所以这将一遍又一遍地重复您的纹理。

这样,TextureRegion 将已经显示您的一个纹理在 x 和 y 方向重复 100 次。如果您随后告诉PolygonSprite 使用该区域,它应该会按照您发布的图像显示它。

希望对您有所帮助... :)

【讨论】:

    【解决方案3】:

    您可以通过代码创建新纹理。取你的关卡大小并用你的纹理填充它,然后删除顶部的背景。看像素图。也许这会对你有所帮助。

    编辑:

    TextureRegion 不会重复以适应您甚至使用纹理的大小,或者您使用 TiledDrawable。

    【讨论】:

    • 我不需要简单的像素图,我需要放置诸如地面纹理之类的东西,用 Photoshop 和 Illustrator 制作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多