Box2d身体填充纹理Libgdx

时间:2016-05-24 09:57:39

标签: java libgdx box2d

我的游戏中有一个简单的三角形(障碍物),我想反复填充它。我已经查看了其他两个主题,但无法找到可行的解决方案。如何用一个小图像填充这个三角形(假设它被称为" brickTexture.png"重复? 以下是在Obstacle.java中创建障碍物的box2dbody的代码

BodyDef bdef = new BodyDef();
bdef.position.set(obstaclePosition);
bdef.type = BodyDef.BodyType.StaticBody;
b2body = world.createBody(bdef);

FixtureDef fdef = new FixtureDef();
PolygonShape triangle = new PolygonShape();
float vertices1[] ={-50 / PPM, 100 / PPM,
                    50 / PPM, 100 / PPM,
                     0 / PPM,  0 / PPM};
triangle.set(vertices1);

fdef.shape = triangle;
b2body.createFixture(fdef);

这是三角形

enter image description here

1 个答案:

答案 0 :(得分:2)

这可以通过使用 PolygonRegion PolygonSpriteBatch 类轻松实现,并且适用于任何多边形(不仅仅是三角形)。

创建多边形区域:

// this will calculate the triangles given your vertices
short triangles[] = new EarClippingTriangulator().computeTriangles(vertices1).toArray();
// use your texture region
PolygonRegion polygonRegion = new PolygonRegion(textureRegion, vertices1, triangles);

然后你需要使用 PolygonSpriteBatch 在所需位置渲染(我假设身体位置):

polygonSpriteBatch.draw(polygonRegion, x, y);

确保使用重复换行来加载纹理,以便它可以平铺:

texture.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);

课程文档:PolygonRegionEarClippingTriangulatorPolygonSpriteBatch