我正在尝试在 jbox2d TestBed 中创建一个带有夹具的主体,该夹具有 9 个顶点。 当我尝试运行测试时,出现以下错误:
Exception in thread "Testbed" java.lang.ArrayIndexOutOfBoundsException: 8
at org.jbox2d.collision.Distance$DistanceProxy.set(Distance.java:510)
at org.jbox2d.dynamics.World.solveTOI(World.java:1326)
at org.jbox2d.dynamics.World.step(World.java:642)
at org.jbox2d.testbed.framework.TestbedTest.step(TestbedTest.java:447)
at org.jbox2d.testbed.tests.FixtureTest.step(FixtureTest.java:34)
at org.jbox2d.testbed.framework.AbstractTestbedController.updateTest(AbstractTestbedController.java:274)
at org.jbox2d.testbed.framework.AbstractTestbedController.render(AbstractTestbedController.java:406)
at org.jbox2d.testbed.framework.AbstractTestbedController.stepAndRender(AbstractTestbedController.java:392)
at org.jbox2d.testbed.framework.TestbedController.stepAndRender(TestbedController.java:68)
at org.jbox2d.testbed.framework.TestbedController.run(TestbedController.java:62)
at java.lang.Thread.run(Thread.java:745)
此错误仅在我更改顶点的限制时发生。如果我不改变它,当我运行测试时,我得到一个只有 8 个顶点的夹具,数组的最后一个顶点被忽略。
这是我为创建夹具所做的,我无法弄清楚我做错了什么:
Settings.maxPolygonVertices = 20;
BodyDef myBodyDef = new BodyDef();
myBodyDef2.type = BodyType.DYNAMIC;
myBodyDef2.position.set(new Vec2(2,0.925F));
Body egg = m_world.createBody(myBodyDef);
vertices = new Vec2[9];
vertices[0] = new Vec2(-0.1f,0.4f);
vertices[1] = new Vec2(-0.2f,0.3f);
vertices[2] = new Vec2(-0.3f,0.1f);
vertices[3] = new Vec2(-0.3f,-0.1f);
vertices[4] = new Vec2(-0.2f,-0.3f);
vertices[5] = new Vec2(0.1f,-0.3f);
vertices[6] = new Vec2(0.2f,-0.1f);
vertices[7] = new Vec2(0.2f,0.1f);
vertices[8] = new Vec2(0.1f,0.3f);
PolygonShape myPolygonShape = new PolygonShape();
myPolygonShape.set(vertices, 9);
FixtureDef myFixtureDef = new FixtureDef();
myFixtureDef.shape = myPolygonShape;
myFixtureDef.restitution = 0.4f;
myFixtureDef.density = 1;
myFixtureDef.friction = 1f;
egg.createFixture(myFixtureDef);