每当我在Tiled的“对象”层中创建对象时,都会在LibGDX中错误地放置它,甚至根本不放置它。例如,如果我要放置一个对象,它将在Libgdx中的绘制图块上方显示300个像素。任何帮助。
注意:我认为此错误与调整地图大小有关,因为每次执行此操作时,即使对象已正确放置在Tiled中,libgdx中的主体仍会上下移动。
这是我用来设置实体和加载图块的代码:
private void loadMap(){
//loads map created with Tiled
mapLoader = new TmxMapLoader();
map = mapLoader.load("Graphics/XML/test2.tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(map);
BodyDef bodyDef = new BodyDef();
Body body;
Shape shape;
FixtureDef fixtureDef = new FixtureDef();
for(MapObject mapObject: map.getLayers().get(1).getObjects()){
if(mapObject instanceof RectangleMapObject){
shape = getRectangle((RectangleMapObject)mapObject);
} else if (mapObject instanceof PolygonMapObject){
shape = getPolygon((PolygonMapObject)mapObject);
} else {
continue;
}
bodyDef.type = BodyDef.BodyType.StaticBody;
body = world.createBody(bodyDef);
fixtureDef.shape = shape;
body.createFixture(fixtureDef);
shape.dispose();
}
private static PolygonShape getRectangle (RectangleMapObject rectangleObject) {
Rectangle rectangle = rectangleObject.getRectangle();
PolygonShape polygon = new PolygonShape();
Vector2 size = new Vector2((rectangle.x + rectangle.width/2f) / MainValues.PPM,
((rectangle.y + rectangle.height )/2f ) / MainValues.PPM);
polygon.setAsBox( (rectangle.getWidth()/2f) /MainValues.PPM,
(rectangle.getHeight()/2f) / MainValues.PPM, size, 0.0f);
System.out.println(rectangle.x + " " + rectangle.y);
return polygon;
}
private static PolygonShape getPolygon(PolygonMapObject polygonObject) {
PolygonShape polygon = new PolygonShape();
float[] vertices = polygonObject.getPolygon().getTransformedVertices();
float[] worldVertices = new float[vertices.length];
for (int i = 0; i < vertices.length; ++i) {
worldVertices[i] = vertices[i] / MainValues.PPM;
}
polygon.set(worldVertices);
return polygon;
}