利用物理体编辑器进行Libgdx碰撞检测

时间:2014-03-07 20:34:24

标签: libgdx box2d collision-detection game-physics

我最近开始使用Libgdx进行开发。现在,我正在研究自定义形状的碰撞检测。就我而言,我想检测鲨鱼与其他物体的碰撞。由于鲨鱼是一个自定义形状,我使用物理体编辑器(https://code.google.com/p/box2d-editor/downloads/detail?name=physics-body-editor-2.9.2.zip&can=2&q=)将形状转换为json格式。

我已经有了鲨鱼和其他东西的图​​像绘制代码,但现在我不知道如何使用json文件实现对collission的检测。 phycics body编辑网站上的教程采用了与我不同的方法。

现在,我正在使用渲染方法绘制我的鲨鱼:

batcher.draw(sharkAnimation, shark.getX(),
                        shark.getY(), shark.getWidth(), shark.getHeight());

sharkAnimation是一个TextureRegion,而shark是一个具有X,Y,宽度和高度的对象。 鲨鱼的宽度和高度是可变的,但保持相同的比例。

我已经获得了libgdx的bodyeditor,我正在尝试使用以下代码,但老实说,我不知道应该如何处理这个问题。

BodyEditorLoader loader = new BodyEditorLoader(
                Gdx.files.internal("data/shark.json"));

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

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

帮助非常明显。

1 个答案:

答案 0 :(得分:2)

您需要创建一个主体,然后使用加载器将您在编辑器中创建的夹具附加到该主体。

Body body = getWorld().createBody(bd);
loader.attachFixture(body, name, fd, scale);

这个名字就是你在物理编辑器中叫它的名字。缩放是您希望从默认大小缩放的程度。如果您不想更改它,请使用1。