我有两具尸体。一个圆圈内有一个球,另一个圆圈内有多边形。我试图检测身体内的精灵之间的碰撞而不是身体本身,如下面的代码片段所示。
@Override
public void beginContact(Contact contact) {
Body a = contact.getFixtureA().getBody();
Body b = contact.getFixtureB().getBody();
if(contact.isTouching()){
System.out.println(contact.isTouching());
if (a.getUserData() == Constants.Enemy || b.getUserData() == Constants.Enemy) {
System.out.println("yes");
}
}
}
上面的方法打印出来"是"当身体处于如下图所示的阶段时,因为精灵没有相互接触。有什么想法吗?
答案 0 :(得分:0)
可能还有另一种做法,但如果我想要更准确,可以使用此工具 - > http://www.aurelienribon.com/blog/projects/physics-body-editor/
如果您遇到任何初始错误,可以查看这些问题可能是充电器错误 - > Physics Body Editor error
在此回复中或此BodyEditorLoader - noSuchMethod,公开使用在libgdx(1.5.x)中适合我的充电器
我希望能帮助
<强>更新强>
你说: “感谢你,但我不确定这是否会对我有所帮助。”
Box2d最初假设你不知道你的精灵,位置或任何东西。他“box2d”只知道固定装置等。如果你的精灵与灯具的尺寸不匹配,不知道,没有发生故障,但是你会发现不同的东西。
因此,使用该工具,我说,您可以更灵活地调整灯具的形状。
这是一个可以模拟的图像,夹具是Gimp中的图像,只是为了看到这个想法:
答案 1 :(得分:0)
像Angel Angel一样说,
Box2D具有检测碰撞的边界体积,这些碰撞不是像素完美的,并且对Sprite本身一无所知。这是出于性能原因,因为碰撞检测对性能有很大影响。
解决方案是使边界框更准确。您可以使用PolygonsShapes或使您的边界矩形更小。
在您的情况下,我会考虑使用PolygonShape。