我不知道为什么 ShapeRenderer 对象没有在屏幕上绘制圆形。我尝试修改代码以包括建议,例如将 shaperenderer 对象的投影矩阵和变换矩阵更改为批处理矩阵,甚至在 shaperenderer.begin() 之前添加 batch.end() 。这是我的代码:
public void draw (Batch batch, float parentAlpha){
super.draw(batch, parentAlpha);
batch.end();
shapeRend.setProjectionMatrix(batch.getProjectionMatrix());
shapeRend.setTransformMatrix(batch.getTransformMatrix());
float x = body.getWorldCenter().x;
float y = body.getWorldCenter().y;
shapeRend.translate(x, y, 0);
shapeRend.begin(ShapeType.Filled);
shapeRend.setColor(Color.RED);
shapeRend.circle(0, 0, Constants.PLAYER_RADIUS);
shapeRend.end();
batch.begin();
}
除了 Contants.player_radius = 0.2 之外,我确实没有其他代码可以提供,这应该没有什么区别。我的世界渲染器(Box2D 物理)是可见的,但 shaperenderer 圆不存在。本来我没有放入translate函数,只是将x和y直接放入shapeRend.circle(x,y,r)方法调用中,但我只是测试不同的方式。任何的意见都将会有帮助。谢谢。
最佳答案
对于所有可能对我的问题感到困惑的人,我深表歉意。我发现出了什么问题。问题是我使用的是不同的正交相机,它有一个投影矩阵,它是左下角的一个小正方形。我未能将投影矩阵更改为较小的左角。
shapeRend.setProjectionMatrix(camera.combined);
批处理的投影矩阵未配置为相机的投影矩阵,这就是它失败的原因。
无论如何,我不再使用 shapeRenderer,因为我相信使用纹理更好。感谢所有回答的人。
关于java - ShapeRenderer LibGdx 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529956/