java - 使用多个夹具时 Box2D 程序崩溃

标签 java libgdx box2d

这应该是一个简单的问题,希望能快速得到答案。 :) 我正在使用 box2d 进行我正在做的侧滚动项目。一切顺利,谢谢您的询问。 :D 无论如何,我的角色需要使用不同大小的盒子作为边界。我以为这就像在车身上添加一个新的固定装置一样简单,但它不起作用。它崩溃了,我得到了这个:

java: ./Box2D/Collision/b2Distance.h:103: const b2Vec2& b2DistanceProxy::GetVertex(int32) const: Assertion `0 <= index && index < m_count' failed.

我不知道这意味着什么。这是我用来创建主体和固定装置的代码:

        BodyDef bodyDef = new BodyDef();
        bodyDef.type = BodyType.DynamicBody;
        bodyDef.position.set(level.character.position);
        Body body = b2world.createBody(bodyDef);
        level.character.body = body;

        PolygonShape polygonShapeHead = new PolygonShape();
        origin.x = level.character.circleBoundOrigin.x * 2.0f;
        origin.y = level.character.circleBoundOrigin.y * 3.0f;
        polygonShapeHead.setAsBox(level.character.circleBoundOrigin.x,
                level.character.circleBoundOrigin.y, origin, 0);
        FixtureDef fixtureDefHead = new FixtureDef();
        fixtureDefHead.shape = polygonShapeHead;
        fixtureDefHead.friction = level.character.friction.x;
        body.createFixture(fixtureDefHead);

        polygonShapeHead.dispose();

        PolygonShape polygonShapeBod = new PolygonShape();
        origin = level.character.rectBoundOrigin;
        polygonShapeHead.setAsBox(level.character.rectBoundOrigin.x,
                level.character.rectBoundOrigin.y, origin, 0);
        FixtureDef fixtureDefBod = new FixtureDef();
        fixtureDefBod.shape = polygonShapeBod;
        fixtureDefBod.friction = level.character.friction.x;
        body.createFixture(fixtureDefBod);

        polygonShapeBod.dispose();

据我所知,我做的一切都是正确的。那么为什么它不起作用呢?为什么会崩溃?我正在使用fixturedef。这可能是问题所在吗?谢谢!

最佳答案

当您在 world.step() 期间添加/销毁对象时会发生这种情况。如果您要动态添加/销毁对象,则需要将它们排队并确保在调用 world.step() 之前或之后进行更改

本教程系列对此进行了讨论。 http://youtu.be/ACQaU2Vr1ao?t=15m26s

关于java - 使用多个夹具时 Box2D 程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121131/

相关文章:

java - LibGDX OpenGL 问题

ios - 制作屏幕 'Edges' (Cocos2D)

java - 将包含德语字符的 ANSI 文件转换为 UTF8

java - 哪种 Hibernate FetchMode 会导致集合延迟加载?

java - Maven 中的依赖问题

java - 使用最新的 BaseGameUtils 的 Google Play 游戏服务 LibGDX 项目设置

java - 阶段中的 LibGDX Actor 未收到点击事件

android - 在 AndEngine 中,操纵主体总是返回 NullPointerException

java - 引用 World 时表达式 : IsLocked() == false, 崩溃?

java - 如何使用JNA通过引用传递结构