【问题标题】:import json using box2d , I do not see the imported object使用 box2d 导入 json ,我没有看到导入的对象
【发布时间】:2015-02-13 16:08:03
【问题描述】:

我在渲染使用 Box2D Editor 创建的 json 对象时遇到问题。 我的问题是即使物体隔垫(根据网上找到的教程正确),在舞台上也看不到。

private void createBottle() {
    // 0. Create a loader for the file saved from the editor.
    BodyEditorLoader loader = new BodyEditorLoader(Gdx.files.internal("ball.json"));

    // 1. Create a BodyDef, as usual.
    BodyDef bd = new BodyDef();
    bd.position.set(spaceShip.getX(), spaceShip.getY());
    bd.type = BodyDef.BodyType.DynamicBody;

    // 2. Create a FixtureDef, as usual.
    FixtureDef fd = new FixtureDef();
    fd.density = 1;
    fd.friction = 0.5f;
    fd.restitution = 0.3f;

    // 3. Create a Body, as usual.
    bottleModel = world.createBody(bd);

    // 4. Create the body fixture automatically by using the loader.
    loader.attachFixture(bottleModel, "test01", fd, 8);

}

在创建方法中我有这个:

createBottle();

在渲染方法中:

Vector2 bottlePos = bottleModel.getPosition().sub(bottleModelOrigin);
bottleSprite.setPosition(bottlePos.x, bottlePos.y);
bottleSprite.setOrigin(bottleModelOrigin.x, bottleModelOrigin.y);
bottleSprite.setRotation(bottleModel.getAngle() * MathUtils.radiansToDegrees);
bottleSprite.draw(batch);

我不明白为什么没有添加它,我在屏幕上看不到....我有其他项目分配了 z 位置...但是什么都不想出现。

我的目标是进入box2d编辑器制作的迷宫,并会移动到一个带有虚拟摇杆的指挥物体,这就是我正在做的游戏......

如果有人想告诉我如何成功导入,那是你第一次使用带有 import json 的外部编辑器。

编辑

在将我的问题发布到 . 但是错误出现在 Vector2 上……。教程也很清楚,但不起作用……即使在网上,我也看到了他们说不起作用的其他示例……没有资源运行?我还没找到

【问题讨论】:

    标签: java json libgdx box2d physics-engine


    【解决方案1】:

    您可以尝试这里所说的here

    LibGDX 以图像的左下角为参考来绘制图像。因此,如果您将参考点留在身体的左下角,则可以直接将图像放置在参考点的位置(由 Box2d 引擎使用 getPosition() 方法返回)。否则,如果您更改了参考点位置,绘制图像时需要考虑到它。

    因此,您需要将参考点存储在某处以备后用:

    bottleModelOrigin = loader.getOrigin("test01", BOTTLE_WIDTH).cpy();
    

    最后,在您的渲染方法中,您可以在参考点位置绘制图像,相对于图像左下角的局部坐标偏移:

    public void render() {
    Vector2 bottlePos = bottleModel.getPosition().sub(bottleModelOrigin);
    
    bottleSprite.setPosition(bottlePos.x, bottlePos.y);
    bottleSprite.setOrigin(bottleModelOrigin.x, bottleModelOrigin.y);
    bottleSprite.setRotation(bottleModel.getAngle() *   MathUtils.radiansToDegrees);
    
    }
    

    您的代码中的问题似乎是您没有名为 bottleModelOrigin 的变量,至少它在您的第一个示例中不可见。虽然在那种情况下应该抛出 NullPointerException。

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 2011-03-02
      • 2020-09-09
      • 2011-01-05
      相关资源
      最近更新 更多