java - LibGDX + Box2D : Object Positioning

标签 java android libgdx box2d

我正在尝试使用 LibGDX 和 Box2D 编写一些突破性游戏。但有一点我不明白。必须有两 block 砖 block 只与边缘接触。但在模拟器上我只看到两 block 嵌套的砖 block 。

这是 createBox 方法的代码:

private void createBox(float posX, float posY, float boxW, float boxH) {
    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyDef.BodyType.StaticBody;
    bodyDef.position.set(posX, posY);

    Body body = world.createBody(bodyDef);

    PolygonShape shape = new PolygonShape();
    shape.setAsBox(boxW, boxH);

    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = shape;
    fixtureDef.density = 1f;

    Fixture fixture = body.createFixture(fixtureDef);

    shape.dispose();
}

enter image description here

编辑:乘以代码。

createBox(CONS_HOLDER.BRICKS_LEFT_MARGIN + (i * CONS_HOLDER.BRICK_WIDTH * 2 ),
                        CONS_HOLDER.BRICK_TOP_SCREEN_MARGIN + (j * CONS_HOLDER.BRICK_HEIGHT * 2 ) + CONS_HOLDER.BRICKS_TOP_MARGIN,
                        CONS_HOLDER.BRICK_WIDTH / 2,
                        CONS_HOLDER.BRICK_HEIGHT / 2);

最佳答案

setAsBox(float, float) 的文档指出参数是half-widthhalf-height。您应该将盒子的尺寸分成两半以获得正确的尺寸。

private void createBox(float posX, float posY, float boxW, float boxH) {
    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyDef.BodyType.StaticBody;
    bodyDef.position.set(posX, posY);

    Body body = world.createBody(bodyDef);

    PolygonShape shape = new PolygonShape();
    shape.setAsBox(boxW / 2.f, boxH / 2.f);

    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = shape;
    fixtureDef.density = 1f;

    Fixture fixture = body.createFixture(fixtureDef);

    shape.dispose();
}

文档:https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/physics/box2d/PolygonShape.html#setAsBox-float-float-

关于java - LibGDX + Box2D : Object Positioning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39368345/

相关文章:

java - 在 Libgdx Box2d World 上使用每米像素时出现巨大图像

java - 如何在具有不同标题的单个报告中打印两个表

java - 无法在 Android 中显示画廊中选定的图像

android - 自定义日期选择器对话框android

java - 从其他 onCreate 方法启动一项 Activity

java - Libgdx:基本评分系统

java - Java Google App Engine 的 Cron 作业帮助

java - 如何在 JPA XML 映射文件中使用 AttributeConverter(JPA 2.1)?

java - 修复 Checkstyle INFO 是否可以提高 Java 代码的性能

java - 如何使用 Sprite 作为另一个 Sprite 的 anchor ?