在libgdx游戏中未正确放置平铺的身体

时间:2019-08-15 19:01:29

标签: libgdx tiled

每当我在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;

}

0 个答案:

没有答案