当前位置: 首页 > 知识库问答 >
问题:

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

颛孙凯定
2023-03-14

我最近开始使用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个答案

申屠宏胜
2023-03-14

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

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

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

 类似资料:
  • 嗨,伙计们, 我正在使用libgdx为android开发一个游戏。我完全陷入了探测两个物体碰撞的部分。我有一个我通过下面的函数创建的播放器 和我用玩家相同的功能创建的敌人,我只更改file_path和fixture_name。file_path指向我用box2d编辑器创建的. json文件(站点:http://www.aurelienribon.com/blog/projects/physics-

  • 我有一个项目,我需要模拟一个球道。这种模拟应该包括以下内容:碰撞检测重力速度加速度斜面滚动 这些都需要通过Java和JavaFX用数学和物理公式来实现。 到目前为止,我已经实现了重力,速度和加速度,但我不知道如何实现碰撞检测与数学和物理公式。你有什么想法或者有用的来源吗?

  • 我有两个身体,都是动态的,其中一个我已经关闭了重力,只有当它被我的另一个身体击中时才想打开它。我知道我可以设置自己的联系人侦听器,但我想指定一个动作,只有当两个特定的身体接触时。 有人有指导吗?

  • 我的问题主要与它背后的理论有关。我为一个项目制作了一个2D游戏,通过使用Rectangle类中的.overlapps方法检测碰撞,碰撞处理得很好。首先,被认为是连续或离散碰撞技术。当我读到这个理论时,我说它是离散的,但我在网上的文章中读到离散的主要缺点是它在实际发生碰撞后检测到碰撞。所以,我的问题是:它实际上是离散的吗?如果是这样的话,我看不出它有什么缺点吗?谢谢

  • 问题内容: 我主要专注于图形方面,以创建一些2DGame。我看过/看过几本教程,但是没有一部教程那么令人满意。我已经有一个玩家(一个正方形)在屏幕上移动并与其他正方形碰撞。重力等。 如果在屏幕上看到的对象太多(30 * 20),则一切正常。但是,如果我将其增加到300 * 300,则该程序开始运行非常慢,因为它必须检查许多对象。 我真的不知道Minecraft之类的游戏如何与ALL THOSE块一

  • 当我在中创建一个场景时,我经常需要两个节点在完全相同的或位置来创建一面墙。我添加了矩形物理体。它们都没有任何摩擦。 当我使一个spritendode在这些碰撞体上移动时(我对物理体使用冲量),它的行为就像在两个矩形之间有一个屏障,我需要“推”节点或使其跳过边界。正如我所说的,这些节点彼此完全一致,因此节点应该能够平滑地通过它们。 有什么建议吗? 如果你需要我正在使用的任何代码/图片,请询问。 编辑