提问者:小点点

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


我最近开始使用Libgdx进行开发。现在,我正在研究自定义形状的碰撞检测。就我而言,我想检测鲨鱼与其他物体的碰撞。由于鲨鱼是一种自定义形状,我使用了Physics Body Editor(https://code.google.com/p/box2d-editor/downloads/detail?name=physics-车身编辑器-2.9.2.zip

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

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

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

鲨鱼动画是一个纹理区域,鲨鱼是一个具有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个答案

匿名用户

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

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

这个名字就是你在物理编辑器中所说的。“缩放”是指要将其从默认大小缩放多少。如果你不想更改,只需使用1。