使用LibGDX为Box2d身体着色的最佳方法

时间:2014-04-21 12:10:47

标签: libgdx box2d

我刚开始玩一个非常简单的游戏,我不想为每一个身体创建精灵图像,我只需要用不同颜色为它们着色。

根据这个帖子,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);  

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我建议不要直接使用Sprites,而是转向scene2d及其Actors。 libgdx wiki已经完美地描述了如何做到这一点。

您将创建一个扩展Actor(或Group)的类,并呈现所需的纹理。

创建box2d实体时,您可以设置实体'通过setUserData(actor);

向演员提供的用户数据

现在用step()模拟box2d世界之后,你只需要迭代世界中的物体,通过getUserData()访问actor并将actor的位置和rotatin更新为当前值的身体。维基已经包含了这个所需的完整循环...

希望它有帮助...:)