【发布时间】: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