我刚开始玩一个非常简单的游戏,我不想为每一个身体创建精灵图像,我只需要用不同颜色为它们着色。
根据这个帖子,ShapeRendere似乎不是一个好主意,它更适合开发:When to use ShapeRenderer, Mesh + SpriteBatch, Box2D and Scene2D in Libgdx?
此外,色调只能用于需要图像的纹理: https://github.com/libgdx/libgdx/wiki/Spritebatch,-textureregions,-and-sprite
这是我想要着色的身体之一:
//Dynamic Body
bodyDef = new BodyDef();
//bodyDef.gravityScale
bodyDef.type = BodyType.DynamicBody;
bodyDef.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2);
body = world.createBody(bodyDef);
CircleShape dynamicCircle = new CircleShape();
dynamicCircle.setRadius(10f);
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = dynamicCircle;
fixtureDef.density = 2.5f;
fixtureDef.friction = 0.25f;
fixtureDef.restitution = 0.75f;
body.createFixture(fixtureDef);
有什么想法吗?
答案 0 :(得分:2)
我建议不要直接使用Sprites,而是转向scene2d及其Actors。 libgdx wiki已经完美地描述了如何做到这一点。
您将创建一个扩展Actor(或Group)的类,并呈现所需的纹理。
创建box2d实体时,您可以设置实体'通过setUserData(actor);
现在用step()模拟box2d世界之后,你只需要迭代世界中的物体,通过getUserData()
访问actor并将actor的位置和rotatin更新为当前值的身体。维基已经包含了这个所需的完整循环...
希望它有帮助...:)