【发布时间】:2017-08-21 21:24:59
【问题描述】:
我正在尝试使用 LibGdx Tiled 和 Box2D 为 Android 创建一个小型侧滚动条。 我正在使用对象层来获取玩家和世界之间的碰撞。 如果我使用矩形作为对象层,这工作正常。 但是当我尝试使用多边形时,碰撞不起作用。 我究竟做错了什么。 (抱歉拼写错误)
这是我的代码:
for(MapObject object : map.getLayers().get(5).getObjects()){
if(object instanceof RectangleMapObject) {
Rectangle rect = ((RectangleMapObject) object).getRectangle();
bdef.type = BodyDef.BodyType.StaticBody;
bdef.position.set((rect.getX() + rect.getWidth() / 2) / AoF.PPM, (rect.getY() + rect.getHeight() / 2) / AoF.PPM);
body = world.createBody(bdef);
shape.setAsBox(rect.getWidth() / 2 / AoF.PPM, rect.getHeight() / 2 / AoF.PPM);
fdef.shape = shape;
body.createFixture(fdef);
}
if(object instanceof PolygonMapObject){
float[] vertices = ((PolygonMapObject) object).getPolygon().getTransformedVertices();
float[] worldVertices = new float[vertices.length];
for (int i = 0; i < vertices.length; ++i) {
worldVertices[i] = vertices[i] / AoF.PPM;
}
shape.set(worldVertices);
bdef.type = BodyDef.BodyType.StaticBody;
body = world.createBody(bdef);
fdef.shape = shape;
body.createFixture(fdef);
}
【问题讨论】: