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

使用LibGDX为Box2d主体着色的最佳方法,libgdx,box2d,Libgdx,Box2d,我刚开始玩一个非常简单的游戏,我不想为每一个身体创建精灵图像,我只需要给它们涂上不同的颜色 根据这条线索,ShaperEnder似乎不是一个很好的主意,它更适合开发: 此外,色调只能用于需要图像的纹理: 这是我试图给身体涂上颜色的一个: //Dynamic Body bodyDef = new BodyDef(); //bodyDef.gravityScale bodyDef.type = BodyType.DynamicBody;

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

根据这条线索,ShaperEnder似乎不是一个很好的主意,它更适合开发:

此外,色调只能用于需要图像的纹理:

这是我试图给身体涂上颜色的一个:

          //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);  

有什么想法吗?

我建议不要直接使用精灵,而是转向scene2d及其演员。libgdxwiki已经完美地描述了如何做到这一点

您将创建一个类来扩展Actor(或Group)并渲染所需的纹理

创建box2d实体时,可以通过
setUserData(actor)将实体的用户数据设置为actor

现在,在使用step()模拟box2d世界之后,您只需迭代世界中的实体,通过
getUserData()
访问参与者,并将参与者的位置和旋转更新为实体的当前值。wiki已包含此操作所需的完整循环


希望能有帮助……:)

您可以使用ShaperEnder中的代码来确定它是如何绘制形状的,然后根据您的需要对其进行优化。