gpt4 book ai didi

java - 带纹理的 Box2D body ?

转载 作者:行者123 更新时间:2023-11-30 08:28:28 25 4
gpt4 key购买 nike

我知道如何将 sprite 应用于 Box2d 主体,但有没有办法对其应用纹理?基本上我想要做的是拥有一个纹理,比方说 32x32,然后在整个 body 上重复它,就像这张图片中的地面:

enter image description here

这在 LibGDX 中可能吗?

编辑:

我最近的尝试:

Fixture fixture = body.createFixture(fixtureDef);
Vector2 mTmp = new Vector2();
PolygonShape shape = (PolygonShape) fixture.getShape();
int vertexCount = shape.getVertexCount();
float[] vertices = new float[vertexCount * 2];
for (int k = 0; k < vertexCount; k++) {
shape.getVertex(k, mTmp);
mTmp.rotate(body.getAngle()* MathUtils.radiansToDegrees);
mTmp.add(body.getPosition());
vertices[k * 2] = mTmp.x * PIXELS_PER_METER;
vertices[k * 2 + 1] = mTmp.y * PIXELS_PER_METER;
}
short triangles[] = new EarClippingTriangulator().computeTriangles(vertices).toArray();

Texture texture = new Texture(Gdx.files.internal("data/block.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

TextureRegion textureRegion = new TextureRegion(texture, 0, 0, texture.getWidth(), texture.getHeight());

PolygonRegion region = new PolygonRegion(textureRegion, vertices, triangles);

poly = new PolygonSprite(region);

在渲染中:

polyBatch.begin();
poly.draw(polyBatch);
polyBatch.end();

但它不绘制任何东西。

导入不同形状的关卡后,我得到了这个结果:

enter image description here

只有一个多边形(显示在红色圆圈内)获得纹理。整个关卡作为 JSON 文件导入

最佳答案

是的,这在 libgdx 中很有可能。

您只需要为此创建一个多边形区域

PolygonRegion region = new PolygonRegion(textureRegion, vertices, triangles);

此处 textureRegion 是您要重复的区域。顶点和三角形定义了区域的形状。

这个多边形区域是一个重复的纹理,由顶点和三角形形成红色。您可以使用多边形批处理渲染该区域,就像我们使用 Sprite 批处理一样。

更新

PolygonShape shape = (PolygonShape) fixture.getShape();
int vertexCount = shape.getVertexCount();
float[] vertices = new float[vertexCount * 2];
for (int k = 0; k < vertexCount; k++) {
shape.getVertex(k, mTmp);
mTmp.rotate(body.getAngle()* MathUtils.radiansToDegrees);
mTmp.add(bodyPos);
vertices[k * 2] = mTmp.x * PIXELS_PER_METER;
vertices[k * 2 + 1] = mTmp.y * PIXELS_PER_METER;
}
short triangles[] = new EarClippingTriangulator()
.computeTriangles(vertices)
.toArray();
PolygonRegion region = new PolygonRegion(
textureRegion, vertices, triangles);

关于java - 带纹理的 Box2D body ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com