我对使用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);
}
在create方法中我有这个:
createBottle();
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);
bottleSprite.draw(batch);
我不明白为什么没有添加,我在屏幕上看不到....我有其他项目分配了z位置......但没有什么不想出现。
我的目标是进入使用box2d编辑器制作的迷宫,然后使用虚拟操纵杆进入一个指挥对象,这就是我正在做的游戏......
如果有人想要了解如何成功导入,那么这是第一次使用带有import json的外部编辑器。
EDIT
我在尝试发布问题之前也尝试过教程。 然而,错误是在Vector2 ....也是教程是明确但不工作...甚至在线我看到其他示例,他们说,这不起作用...没有资源在运行?我还没找到
答案 0 :(得分:0)
您可以尝试here:
LibGDX通过参考左下角绘制图像。因此,如果您将参考点留在身体的左下角,则可以直接将图像放置在参考点的位置(由Box2d引擎使用getPosition()方法返回).Else,如果您更改了参考点位置,你需要考虑它来绘制图像。
因此,您需要将参考点存储在某处以供以后使用:
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。