在Andengine中创建物理主体时出现奇怪的错误

时间:2012-04-07 22:45:08

标签: java android andengine jbox2d

我试图通过这样的代码创建一个多边形物理体:

        final float halfWidth = pAreaShape.getWidthScaled() * 0.5f / PIXEL_TO_METER_RATIO_DEFAULT;
        final float halfHeight = pAreaShape.getHeightScaled() * 0.5f / PIXEL_TO_METER_RATIO_DEFAULT;            
        final float centerX = 0;
        final float left = -halfWidth;
        final float right = halfWidth;
        final float top = -halfHeight + 9f / PIXEL_TO_METER_RATIO_DEFAULT;
        final float bottom = halfHeight;

        final PolygonShape shape1 = new PolygonShape();

        final Vector2[] vertices = {
                new Vector2(centerX, bottom),
                new Vector2(left+8f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-19f/PIXEL_TO_METER_RATIO_DEFAULT),
                new Vector2(left+7f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-23f/PIXEL_TO_METER_RATIO_DEFAULT),
                new Vector2(left+10f/PIXEL_TO_METER_RATIO_DEFAULT, top+14f/PIXEL_TO_METER_RATIO_DEFAULT),
                new Vector2(left+13f/PIXEL_TO_METER_RATIO_DEFAULT, top+8f/PIXEL_TO_METER_RATIO_DEFAULT),

                new Vector2(right-14f/PIXEL_TO_METER_RATIO_DEFAULT, top+8f/PIXEL_TO_METER_RATIO_DEFAULT),
                new Vector2(right-11f/PIXEL_TO_METER_RATIO_DEFAULT, top+14f/PIXEL_TO_METER_RATIO_DEFAULT),
                new Vector2(right-9f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-23f/PIXEL_TO_METER_RATIO_DEFAULT),
                new Vector2(right-10f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-19f/PIXEL_TO_METER_RATIO_DEFAULT)
        };

        Body body = PhysicsFactory.createPolygonBody(pPhysicsWorld, pAreaShape, vertices, pBodyType, pFixtureDef);

变量顶点包含此形状的顶点。

它不起作用 - 应用程序启动(显示黑屏和应用程序标题栏),而不是没有任何错误退出(没有崩溃对话框,LogCat中没有错误)。

但是当我删除顶点数组中的一个元素时,它可以正常工作。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

Box2D在多边形中最多有8个顶点,如果指定更多,则会因断言而失败。我不确定Box2D ANDEngine使用的是什么版本,但尝试制作循环或边缘形状