为什么我的 Box2d libgdx 游戏中有一个幻影接触点
Why there is a phantom contact points in my Box2d libgdx game
我正在使用 libgdx
和 box2d
编写游戏。当一个物体接触另一个物体时,经常会出现幻象接触点。这是我绘制接触点的方式:
private void renderContactPoints() {
for (Contact contact : world.getContactList())
for (Vector2 point : contact.getWorldManifold().getPoints())
renderer.getBatch().draw(tex, point.x * PPM, point.y * PPM, 20, 20);
}
问题截图
为了性能 Box2D 和 libGDX 重新使用数组以避免重新分配,因此您不能迭代完整的结果getContactList
和 getPoints
,因为您会得到太多结果。
改为先查询商品数量:
private void renderContactPoints() {
for(int i = 0; i < world.getContactCount(); ++i) {
Contact contact = world.getContactList().get(i);
for (int j = 0; j < contact.getWorldManifold().getNumberOfContactPoints(); ++j) {
Vector2 point = contact.getWorldManifold().getPoints()[j];
renderer.getBatch().draw(tex, point.x * PPM, point.y * PPM, 20, 20);
}
}
}
我正在使用 libgdx
和 box2d
编写游戏。当一个物体接触另一个物体时,经常会出现幻象接触点。这是我绘制接触点的方式:
private void renderContactPoints() {
for (Contact contact : world.getContactList())
for (Vector2 point : contact.getWorldManifold().getPoints())
renderer.getBatch().draw(tex, point.x * PPM, point.y * PPM, 20, 20);
}
问题截图
为了性能 Box2D 和 libGDX 重新使用数组以避免重新分配,因此您不能迭代完整的结果getContactList
和 getPoints
,因为您会得到太多结果。
改为先查询商品数量:
private void renderContactPoints() {
for(int i = 0; i < world.getContactCount(); ++i) {
Contact contact = world.getContactList().get(i);
for (int j = 0; j < contact.getWorldManifold().getNumberOfContactPoints(); ++j) {
Vector2 point = contact.getWorldManifold().getPoints()[j];
renderer.getBatch().draw(tex, point.x * PPM, point.y * PPM, 20, 20);
}
}
}