Box2D ChainShape VertexCount = 0

时间:2017-06-01 05:48:53

标签: java libgdx box2d physics


我在LibGDX上使用Box2D,我正在处理机构和碰撞等。
HERE,我有一个身体与另一个人碰撞的问题,当它不应该这样做时。
现在知道我需要使用ChainShapes之后,我就开始了。
每当你运行我的项目时,我都会收到一个断言错误:

  

断言失败:( count> = 2),函数CreateChain,file   /Users/tom/Coding/slave/workspace/libgdx-mac/extensions/gdx-box2d/gdx-box2d/jni/Box2D/Collision/Shapes/b2ChainShape.cpp,   第62行。


所以我尝试了一个小的调试来打印顶点计数,并将顶点输出打印为0。
问题是我正在添加顶点并且它们似乎没有添加...
添加verticies的代码:

    chain = new ChainShape();
    chain.setNextVertex(new Vector2((posx - size) / PPM, (posy + size) / PPM));
    chain.setNextVertex(new Vector2((posx + size) / PPM, (posy + size) / PPM));
    chain.setNextVertex(new Vector2((posx + size) / PPM, (posy - size) / PPM));
    chain.setNextVertex(new Vector2((posx - size) / PPM, (posy - size) / PPM));
    System.out.println(chain.getVertexCount());


顶点计数打印为0,这就是我收到错误的原因,我不知道如何修复它,所以请帮忙:))

1 个答案:

答案 0 :(得分:1)

以这种方式创建ChainShape

ChainShape chain=new ChainShape();

Vector2 vector[]=new Vector2[4];
vector[0]=new Vector2((posx - size) / PPM, (posy + size) / PPM);
vector[1]=new Vector2((posx + size) / PPM, (posy + size) / PPM);
vector[2]=new Vector2((posx + size) / PPM, (posy - size) / PPM);
vector[3]=new Vector2((posx - size) / PPM, (posy - size) / PPM);

chain.createChain(vector);

System.out.println(chain.getVertexCount());  // 4 on console

如果问题仍然存在,请检查posxposysizePPM

的值