java - Box2D ChainShape 顶点计数=0

标签 java libgdx box2d physics


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

Assertion failed: (count >= 2), function CreateChain, file /Users/tom/Coding/slave/workspace/libgdx-mac/extensions/gdx-box2d/gdx-box2d/jni/Box2D/Collision/Shapes/b2ChainShape.cpp, line 62.


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

    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,这就是为什么我收到错误,我不知道如何修复它,所以请帮助:)

最佳答案

以这种方式创建您的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 的值

关于java - Box2D ChainShape 顶点计数=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44299392/

相关文章:

lua - Corona Lua 将对象 y 属性显示为百万分之三像素(!)

iPhone-Cocos2d-Box2d游戏#include <list>问题

java - 使用静态的 Selenium 框架

java - 使用 Java 8 的 Stream API,如何编写一个纯净的过滤函数?

android - 使用 Libgdx 为 64 位设备更新 Android 应用程序

android - Libgdx:如何保存首选项?

java - PlayN JBox2D Y 速度增加但发生碰撞

java - 为所有小程序设置默认内存限制

java - 如何使用javaFX Canvas绘制图像图案

java - LibGDX/Android开发: Managing cameras across multiple screens